From 1fd6324bb8baaee4d413f188c78b821f84e5d4ff Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Tue, 25 Apr 2023 06:21:07 +0000 Subject: [PATCH] crimson/osd/pg: make clone object's version consistent with pglog Right now, the head object's version is 1 less than clone object's version in the pg log; while it's exactly the other way around when it comes to the versions recorded in the object info of head/clone objects Fixes: https://tracker.ceph.com/issues/59536 Signed-off-by: Xuehan Xu --- src/crimson/osd/ops_executer.cc | 12 +++--------- src/crimson/osd/ops_executer.h | 1 - 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index ac6c99d8d8189..040870203bd95 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -950,7 +950,7 @@ std::unique_ptr OpsExecuter::execute_clone( cloning_ctx->log_entry = { pg_log_entry_t::CLONE, coid, - osd_op_params->at_version, + snap_oi.version, initial_obs.oi.version, initial_obs.oi.user_version, osd_reqid_t(), @@ -964,12 +964,10 @@ std::unique_ptr OpsExecuter::execute_clone( } void OpsExecuter::CloningContext::apply_to( - const eversion_t& at_version, std::vector& log_entries, ObjectContext& processed_obc) && { log_entry.mtime = processed_obc.obs.oi.mtime; - log_entry.version = at_version; log_entries.emplace_back(std::move(log_entry)); processed_obc.ssc->snapset = std::move(new_snapset); } @@ -984,11 +982,7 @@ OpsExecuter::flush_clone_metadata( assert(!txn.empty()); auto maybe_snap_mapped = interruptor::now(); if (cloning_ctx) { - osd_op_params->at_version = pg->next_version(); - std::move(*cloning_ctx).apply_to( - osd_op_params->at_version, - log_entries, - *obc); + std::move(*cloning_ctx).apply_to(log_entries, *obc); const auto& coid = log_entries.back().soid; const auto& cloned_snaps = obc->ssc->snapset.clone_snaps[coid.snap]; maybe_snap_mapped = snap_map_clone( @@ -1018,7 +1012,7 @@ std::pair OpsExecuter::prepare_clone( const hobject_t& coid) { object_info_t static_snap_oi(coid); - static_snap_oi.version = osd_op_params->at_version; + static_snap_oi.version = pg->next_version(); static_snap_oi.prior_version = obc->obs.oi.version; static_snap_oi.copy_user_bits(obc->obs.oi); if (static_snap_oi.is_whiteout()) { diff --git a/src/crimson/osd/ops_executer.h b/src/crimson/osd/ops_executer.h index f5a1ed71bafb0..697adffdb2184 100644 --- a/src/crimson/osd/ops_executer.h +++ b/src/crimson/osd/ops_executer.h @@ -187,7 +187,6 @@ private: pg_log_entry_t log_entry; void apply_to( - const eversion_t& at_version, std::vector& log_entries, ObjectContext& processed_obc) &&; }; -- 2.39.5