From: cuixf Date: Mon, 11 Jun 2018 02:06:42 +0000 (-0400) Subject: osd: fix memory leak at EC read X-Git-Tag: v14.0.1~1121^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F22500%2Fhead;p=ceph.git osd: fix memory leak at EC read Clean the in_progess and shard_to_read_map when the read op is complete, to prevent memory leak and primary osd crash. Signed-off-by: xiaofei cui --- diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 151e35e4141..1bf6464f5f9 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -1257,6 +1257,13 @@ void ECBackend::complete_read_op(ReadOp &rop, RecoveryMessages *m) reqiter->second.cb = nullptr; } } + // if the read op is over. clean all the data of this tid. + for (set::iterator iter = rop.in_progress.begin(); + iter != rop.in_progress.end(); + iter++) { + shard_to_read_map[*iter].erase(rop.tid); + } + rop.in_progress.clear(); tid_to_read_map.erase(rop.tid); }