]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: Fix memory leak of ECDummyOp ec_memory_leak_i wip_ec_memory_leak
authorAlex Ainscow <aainscow@uk.ibm.com>
Sun, 18 Jan 2026 22:13:54 +0000 (22:13 +0000)
committerAlex Ainscow <aainscow@uk.ibm.com>
Mon, 19 Jan 2026 13:48:26 +0000 (13:48 +0000)
Upon a pg falling idle, an ECDummy op is immediately generated.
This op causes the pg log to be committed. This op gets added to
the tid_to_op_map, however it does not get removed until the
interval ends.

The lack of remove is essentially a temporary "leak" and since the
op data structure is quite big, this can add up to significant
amounts of memory in a heavily loaded system.

The fix is simple - to add the op to the waiting list, so that it
gets cleaned up on when the op is finished.

Fixes: https://tracker.ceph.com/issues/74433
Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
src/osd/ECCommon.cc

index 66e2b1542dfebc66a5479185566b700d4746e3b1..13bf7ff3d0a0149abb1dbdf26cbafa55915ab6be 100644 (file)
@@ -978,6 +978,7 @@ void ECCommon::RMWPipeline::finish_rmw(OpRef const &op) {
       nop->pipeline = this;
 
       tid_to_op_map[tid] = nop;
+      waiting_commit.push_back(nop);
 
       /* The cache is idle (we checked above) and this IO never blocks for reads
        * so we can skip the extent cache and immediately call the completion.