From: Sage Weil Date: Thu, 1 Dec 2016 14:38:43 +0000 (-0500) Subject: osd/osd_types: prevent ObjectModDesc::bl from pinning memory X-Git-Tag: v11.1.0~84^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=896644d5e520bb7a844582f357de48fd5c3a6f69;p=ceph.git osd/osd_types: prevent ObjectModDesc::bl from pinning memory 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 --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 9a14cc18fa3a..6735a523b829 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -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); }