]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/osd_types: avoid pinning memory with pg_log_entry_t::snaps 12256/head
authorSage Weil <sage@redhat.com>
Thu, 1 Dec 2016 14:39:25 +0000 (09:39 -0500)
committerSage Weil <sage@redhat.com>
Thu, 1 Dec 2016 14:39:25 +0000 (09:39 -0500)
The pg_log_entry_t may stay in memory for a long time;
avoid pinning a larger buffer in memory.

See: http://tracker.ceph.com/issues/18093
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/osd_types.cc

index 6735a523b829baa3b177e5747d69bf0680dba183..410af4457ebb56715fbdd8cf022cdf58b1b811a4 100644 (file)
@@ -3535,6 +3535,8 @@ void pg_log_entry_t::decode(bufferlist::iterator &bl)
   if (struct_v >= 7 ||  // for v >= 7, this is for all ops.
       op == CLONE) {    // for v < 7, it's only present for CLONE.
     ::decode(snaps, bl);
+    // ensure snaps does not pin a larger buffer in memory
+    snaps.rebuild();
   }
 
   if (struct_v >= 8)