Skip to content

Commit 7e0dde7

Browse files
committed
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 <[email protected]>
1 parent 207e5a6 commit 7e0dde7

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

src/crimson/osd/ops_executer.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,6 @@ std::vector<pg_log_entry_t> OpsExecuter::prepare_transaction(
819819
// entry.
820820
assert(obc->obs.oi.soid.snap >= CEPH_MAXSNAP);
821821
std::vector<pg_log_entry_t> log_entries;
822-
osd_op_params->at_version.version++;
823822
log_entries.emplace_back(
824823
obc->obs.exists ?
825824
pg_log_entry_t::MODIFY : pg_log_entry_t::DELETE,
@@ -931,8 +930,8 @@ std::unique_ptr<OpsExecuter::CloningContext> OpsExecuter::execute_clone(
931930
return std::vector<snapid_t>{std::begin(snapc.snaps), last};
932931
}();
933932

934-
osd_op_params->at_version.version++;
935933
auto clone_obc = prepare_clone(coid, osd_op_params->at_version);
934+
osd_op_params->at_version.version++;
936935

937936
// make clone
938937
backend.clone(clone_obc->obs.oi, initial_obs, clone_obc->obs, txn);

0 commit comments

Comments
 (0)