From ee0bae573fb541fb32fd1244decd8b0d71fd08ec Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Thu, 21 May 2026 11:13:57 +0300 Subject: [PATCH] Remove n_subops=0 (TODO also needs OSD unit tests) --- src/osd/osd_primary_write.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/osd/osd_primary_write.cpp b/src/osd/osd_primary_write.cpp index 0de47940..2139034c 100644 --- a/src/osd/osd_primary_write.cpp +++ b/src/osd/osd_primary_write.cpp @@ -339,7 +339,6 @@ resume_12: } resume_6: resume_7: - op_data->n_subops = 0; if (!remember_unstable_write(cur_op, pg, pg.cur_loc_set, 6)) { return; @@ -375,16 +374,21 @@ resume_7: ); recovery_stat[recovery_type].usec += usec; } - if (immediate_commit == IMMEDIATE_ALL) + if (immediate_commit != IMMEDIATE_ALL) + { + // Do not delete anything, it will be deleted as part of copies_to_delete_after_sync + deref_object_state(pg, &op_data->object_state, true); + } + else { submit_primary_del_subops(cur_op, pg.cur_set.data(), pg.pg_size, op_data->object_state->osd_set); - } - deref_object_state(pg, &op_data->object_state, true); - if (op_data->n_subops > 0) - { + deref_object_state(pg, &op_data->object_state, true); + if (op_data->n_subops > 0) + { resume_8: - op_data->st = 8; - return; + op_data->st = 8; + return; + } resume_9: if (op_data->errors > 0) {