From 896644d5e520bb7a844582f357de48fd5c3a6f69 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 1 Dec 2016 09:38:43 -0500 Subject: [PATCH] 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 --- src/osd/osd_types.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 9a14cc18fa3..6735a523b82 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); } -- 2.47.3