From: Sage Weil Date: Thu, 1 Dec 2016 14:39:25 +0000 (-0500) Subject: osd/osd_types: avoid pinning memory with pg_log_entry_t::snaps X-Git-Tag: v11.1.0~84^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=198db468b070aa1d5dde4ae35561e3dfd7ec23e0;p=ceph.git osd/osd_types: avoid pinning memory with pg_log_entry_t::snaps 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 --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 6735a523b829..410af4457ebb 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -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)