]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/ops_executor: update osd_op_params_t::at_version in execute_clone
authorSamuel Just <sjust@redhat.com>
Thu, 9 May 2024 02:45:45 +0000 (02:45 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 18 Jun 2024 07:27:08 +0000 (10:27 +0300)
Signed-off-by: Samuel Just <sjust@redhat.com>
(cherry picked from commit 1ecf3d64853c2fa92bf467692b98a58b4670b212)

src/crimson/osd/ops_executer.cc
src/crimson/osd/ops_executer.h

index c19506dbc9c7e8ee7a467accb2b594675461161b..d8bfa7a361c1a000b9b8bc835cf6d6d4209b1acf 100644 (file)
@@ -931,7 +931,9 @@ std::unique_ptr<OpsExecuter::CloningContext> OpsExecuter::execute_clone(
     return std::vector<snapid_t>{std::begin(snapc.snaps), last};
   }();
 
-  auto clone_obc = prepare_clone(coid);
+  osd_op_params->at_version.version++;
+  auto clone_obc = prepare_clone(coid, osd_op_params->at_version);
+
   // make clone
   backend.clone(clone_obc->obs.oi, initial_obs, clone_obc->obs, txn);
 
@@ -1038,13 +1040,13 @@ OpsExecuter::flush_clone_metadata(
 }
 
 ObjectContextRef OpsExecuter::prepare_clone(
-  const hobject_t& coid)
+  const hobject_t& coid,
+  eversion_t version)
 {
   ceph_assert(pg->is_primary());
-  osd_op_params->at_version.version++;
   ObjectState clone_obs{coid};
   clone_obs.exists = true;
-  clone_obs.oi.version = osd_op_params->at_version;
+  clone_obs.oi.version = version;
   clone_obs.oi.prior_version = obc->obs.oi.version;
   clone_obs.oi.copy_user_bits(obc->obs.oi);
   clone_obs.oi.clear_flag(object_info_t::FLAG_WHITEOUT);
index 72b8c1de309cb3298075ecbf1f5fedac98bd765c..126b23213f50d259b912d1e8ce1e4e2f9f1e5c8a 100644 (file)
@@ -457,7 +457,8 @@ public:
   version_t get_last_user_version() const;
 
   ObjectContextRef prepare_clone(
-    const hobject_t& coid);
+    const hobject_t& coid,
+    eversion_t version);
 
   void apply_stats();
 };