Skip to content

Commit e03f7be

Browse files
authored
Merge pull request ceph#57383 from athanatos/sjust/wip-65867-user-version
crimson: fix user_version handling Reviewed-by: Matan Breizman <[email protected]> Reviewed-by: Xuehan Xu <[email protected]>
2 parents 14a1ef9 + 85fdada commit e03f7be

File tree

5 files changed

+13
-21
lines changed

5 files changed

+13
-21
lines changed

src/crimson/osd/ops_executer.cc

Lines changed: 9 additions & 8 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,7 +930,9 @@ std::unique_ptr<OpsExecuter::CloningContext> OpsExecuter::execute_clone(
931930
return std::vector<snapid_t>{std::begin(snapc.snaps), last};
932931
}();
933932

934-
auto clone_obc = prepare_clone(coid);
933+
auto clone_obc = prepare_clone(coid, osd_op_params->at_version);
934+
osd_op_params->at_version.version++;
935+
935936
// make clone
936937
backend.clone(clone_obc->obs.oi, initial_obs, clone_obc->obs, txn);
937938

@@ -961,10 +962,10 @@ std::unique_ptr<OpsExecuter::CloningContext> OpsExecuter::execute_clone(
961962
pg_log_entry_t::CLONE,
962963
coid,
963964
clone_obc->obs.oi.version,
964-
initial_obs.oi.version,
965-
initial_obs.oi.user_version,
965+
clone_obc->obs.oi.prior_version,
966+
clone_obc->obs.oi.user_version,
966967
osd_reqid_t(),
967-
initial_obs.oi.mtime, // will be replaced in `apply_to()`
968+
clone_obc->obs.oi.mtime, // will be replaced in `apply_to()`
968969
0
969970
};
970971
encode(cloned_snaps, cloning_ctx->log_entry.snaps);
@@ -1039,13 +1040,13 @@ OpsExecuter::flush_clone_metadata(
10391040
}
10401041

10411042
ObjectContextRef OpsExecuter::prepare_clone(
1042-
const hobject_t& coid)
1043+
const hobject_t& coid,
1044+
eversion_t version)
10431045
{
10441046
ceph_assert(pg->is_primary());
1045-
osd_op_params->at_version.version++;
10461047
ObjectState clone_obs{coid};
10471048
clone_obs.exists = true;
1048-
clone_obs.oi.version = osd_op_params->at_version;
1049+
clone_obs.oi.version = version;
10491050
clone_obs.oi.prior_version = obc->obs.oi.version;
10501051
clone_obs.oi.copy_user_bits(obc->obs.oi);
10511052
clone_obs.oi.clear_flag(object_info_t::FLAG_WHITEOUT);

src/crimson/osd/ops_executer.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,8 @@ class OpsExecuter : public seastar::enable_lw_shared_from_this<OpsExecuter> {
457457
version_t get_last_user_version() const;
458458

459459
ObjectContextRef prepare_clone(
460-
const hobject_t& coid);
460+
const hobject_t& coid,
461+
eversion_t version);
461462

462463
void apply_stats();
463464
};
@@ -519,9 +520,6 @@ OpsExecuter::flush_changes_n_do_ops_effects(
519520
ceph_assert(want_mutate);
520521
}
521522
if (want_mutate) {
522-
if (osd_op_params->user_modify) {
523-
osd_op_params->user_at_version = osd_op_params->at_version.version;
524-
}
525523
maybe_mutated = flush_clone_metadata(
526524
prepare_transaction(ops),
527525
snap_mapper,

src/crimson/osd/osd_operations/osdop_params.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ struct osd_op_params_t {
1414
eversion_t pg_trim_to;
1515
eversion_t min_last_complete_ondisk;
1616
eversion_t last_complete;
17-
version_t user_at_version = 0;
1817
bool user_modify = false;
1918
ObjectCleanRegions clean_regions;
2019
interval_set<uint64_t> modified_ranges;

src/crimson/osd/pg.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,6 @@ PG::submit_transaction(
811811
}
812812

813813
epoch_t map_epoch = get_osdmap_epoch();
814-
ceph_assert(!has_reset_since(osd_op_p.at_version.epoch));
815814

816815
peering_state.pre_submit_op(obc->obs.oi.soid, log_entries, osd_op_p.at_version);
817816
peering_state.update_trim_to();

src/crimson/osd/pg_backend.cc

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,15 +163,10 @@ PGBackend::mutate_object(
163163
{
164164
logger().trace("mutate_object: num_ops={}", txn.get_num_ops());
165165
if (obc->obs.exists) {
166-
#if 0
167-
obc->obs.oi.version = ctx->at_version;
168-
obc->obs.oi.prior_version = ctx->obs->oi.version;
169-
#endif
170-
171166
obc->obs.oi.prior_version = obc->obs.oi.version;
172167
obc->obs.oi.version = osd_op_p.at_version;
173-
if (osd_op_p.user_at_version > obc->obs.oi.user_version)
174-
obc->obs.oi.user_version = osd_op_p.user_at_version;
168+
if (osd_op_p.user_modify)
169+
obc->obs.oi.user_version = osd_op_p.at_version.version;
175170
obc->obs.oi.last_reqid = osd_op_p.req_id;
176171
obc->obs.oi.mtime = osd_op_p.mtime;
177172
obc->obs.oi.local_mtime = ceph_clock_now();

0 commit comments

Comments
 (0)