From: Samuel Just Date: Thu, 9 May 2024 03:39:18 +0000 (-0700) Subject: crimson/osd/ops_executor: only increment osd_op_params_t::at_version for clone X-Git-Tag: v19.1.1~217^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ea50765fb3f8cc4ff02df15f2991be38e75f3c0f;p=ceph.git 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) --- diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index d170300379f6..f7aedf925a40 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);