From ea50765fb3f8cc4ff02df15f2991be38e75f3c0f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 8 May 2024 20:39:18 -0700 Subject: [PATCH] crimson/osd/ops_executor: only increment osd_op_params_t::at_version for clone Previously, we incremented prior to usage in both prepare_transaction and execute_clone. Because at_version is initialized from PG::get_next_version(), this results in log entries skipping values. Instead, only increment after populating clone object_info. Signed-off-by: Samuel Just (cherry picked from commit 7e0dde721d5203623b06351bb4b261b3c9fe2c33) --- src/crimson/osd/ops_executer.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index d170300379f..f7aedf925a4 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -819,7 +819,6 @@ std::vector OpsExecuter::prepare_transaction( // entry. assert(obc->obs.oi.soid.snap >= CEPH_MAXSNAP); std::vector log_entries; - osd_op_params->at_version.version++; log_entries.emplace_back( obc->obs.exists ? pg_log_entry_t::MODIFY : pg_log_entry_t::DELETE, @@ -931,8 +930,8 @@ std::unique_ptr OpsExecuter::execute_clone( return std::vector{std::begin(snapc.snaps), last}; }(); - osd_op_params->at_version.version++; auto clone_obc = prepare_clone(coid, osd_op_params->at_version); + osd_op_params->at_version.version++; // make clone backend.clone(clone_obc->obs.oi, initial_obs, clone_obc->obs, txn); -- 2.39.5