From 1e3356278c1bf2e6226369b957efd92e2f877edd Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Fri, 26 Apr 2024 18:12:15 +0800 Subject: [PATCH] crimson/osd/osdop_params:Unify OpsExecuter::user_modify and osd_op_params_t::user_modify Before this change OpsExecuter::user_modify was maintained in OpsExecuter::do_write_op. However, osd_op_params->user_modify was not updated when used in OpsExecuter::prepare_transaction Fixes: https://tracker.ceph.com/issues/65672 Signed-off-by: Xuehan Xu --- src/crimson/osd/ops_executer.cc | 6 +++--- src/crimson/osd/ops_executer.h | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index 10020e9adf8a1..6b0c4cf7ee269 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -466,9 +466,8 @@ auto OpsExecuter::do_write_op(Func&& f, OpsExecuter::modified_by m) { ++num_write; if (!osd_op_params) { osd_op_params.emplace(); - fill_op_params_bump_pg_version(); + fill_op_params_bump_pg_version(m); } - user_modify = (m == modified_by::user); return std::forward(f)(pg->get_backend(), obc->obs, txn); } OpsExecuter::call_errorator::future<> OpsExecuter::do_assert_ver( @@ -802,7 +801,7 @@ OpsExecuter::do_execute_op(OSDOp& osd_op) } } -void OpsExecuter::fill_op_params_bump_pg_version() +void OpsExecuter::fill_op_params_bump_pg_version(OpsExecuter::modified_by m) { osd_op_params->req_id = msg->get_reqid(); osd_op_params->mtime = msg->get_mtime(); @@ -810,6 +809,7 @@ void OpsExecuter::fill_op_params_bump_pg_version() osd_op_params->pg_trim_to = pg->get_pg_trim_to(); osd_op_params->min_last_complete_ondisk = pg->get_min_last_complete_ondisk(); osd_op_params->last_complete = pg->get_info().last_complete; + osd_op_params->user_modify = (m == modified_by::user); } std::vector OpsExecuter::prepare_transaction( diff --git a/src/crimson/osd/ops_executer.h b/src/crimson/osd/ops_executer.h index 60b5c20aecdda..027d0032986f8 100644 --- a/src/crimson/osd/ops_executer.h +++ b/src/crimson/osd/ops_executer.h @@ -187,7 +187,6 @@ private: abstracted_msg_t msg; crimson::net::ConnectionXcoreRef conn; std::optional osd_op_params; - bool user_modify = false; ceph::os::Transaction txn; size_t num_read = 0; ///< count read ops @@ -424,7 +423,7 @@ public: MutFunc&& mut_func) &&; std::vector prepare_transaction( const std::vector& ops); - void fill_op_params_bump_pg_version(); + void fill_op_params_bump_pg_version(modified_by m); ObjectContextRef get_obc() const { return obc; @@ -520,7 +519,7 @@ OpsExecuter::flush_changes_n_do_ops_effects( ceph_assert(want_mutate); } if (want_mutate) { - if (user_modify) { + if (osd_op_params->user_modify) { osd_op_params->user_at_version = osd_op_params->at_version.version; } maybe_mutated = flush_clone_metadata( -- 2.39.5