]> git-server-git.apps.pok.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)
committerSamuel Just <sjust@redhat.com>
Thu, 9 May 2024 02:55:44 +0000 (19:55 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/osd/ops_executer.cc
src/crimson/osd/ops_executer.h

index 3e94b3c06fed3645a39a3f8eb753425e766eb7a4..c56708c81da5ee31b6cb8bb723f403611bc6dea5 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);
 
@@ -1039,13 +1041,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();
 };