From d2cf271f64690b29624e0314c2a902c98f1b88f7 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sat, 20 Jun 2026 11:33:44 +0300 Subject: [PATCH] Track in_flight for sync & delete in vitastor-cli merge --- src/cmd/cli_merge.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cmd/cli_merge.cpp b/src/cmd/cli_merge.cpp index b20271ac..5ba15a71 100644 --- a/src/cmd/cli_merge.cpp +++ b/src/cmd/cli_merge.cpp @@ -614,8 +614,10 @@ struct snap_merger_t subop->offset = offset; subop->len = 0; subop->flags = OSD_OP_IGNORE_READONLY | OSD_OP_WAIT_UP_TIMEOUT; - subop->callback = [](cluster_op_t *subop) + in_flight++; + subop->callback = [this](cluster_op_t *subop) { + in_flight--; if (subop->retval != 0) { fprintf(stderr, "error deleting from layer 0x%jx at offset %jx: %s", subop->inode, subop->offset, strerror(-subop->retval)); @@ -642,8 +644,10 @@ struct snap_merger_t uint64_t to = last_written_offset; cluster_op_t *subop = new cluster_op_t; subop->opcode = OSD_OP_SYNC; + in_flight++; subop->callback = [this, to](cluster_op_t *subop) { + in_flight--; delete subop; // We can now delete source data between and // But to do this we have to keep all object lists in memory :-(