]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/osd_types: prevent ObjectModDesc::bl from pinning memory
authorSage Weil <sage@redhat.com>
Thu, 1 Dec 2016 14:38:43 +0000 (09:38 -0500)
committerSage Weil <sage@redhat.com>
Thu, 1 Dec 2016 14:38:43 +0000 (09:38 -0500)
We may decode this from a large buffer (e.g., an
ECSubWrite payload) and the ObjectModDesc is part of
the pg_log_entry_t, which may stay in memory for a long
time.  Avoid pinning memory.

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

index 9a14cc18fa3a6477b38a80c6f1c2aa242f023293..6735a523b829baa3b177e5747d69bf0680dba183 100644 (file)
@@ -3432,6 +3432,8 @@ void ObjectModDesc::decode(bufferlist::iterator &_bl)
   ::decode(can_local_rollback, _bl);
   ::decode(rollback_info_completed, _bl);
   ::decode(bl, _bl);
+  // ensure bl does not pin a larger buffer in memory
+  bl.rebuild();
   DECODE_FINISH(_bl);
 }