diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index 4a5b5b89d0a..a074d114ac9 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -451,12 +451,12 @@ auto OpsExecuter::do_const_op(Func&& f) { // Defined here because there is a circular dependency between OpsExecuter and PG template -auto OpsExecuter::do_write_op(Func&& f, bool um) { +auto OpsExecuter::do_write_op(Func&& f, OpsExecuter::modified_by m) { ++num_write; if (!osd_op_params) { osd_op_params.emplace(); } - user_modify = um; + user_modify = (m == modified_by::user); return std::forward(f)(pg->get_backend(), obc->obs, txn); } OpsExecuter::call_errorator::future<> OpsExecuter::do_assert_ver( @@ -567,7 +567,7 @@ OpsExecuter::do_execute_op(OSDOp& osd_op) case CEPH_OSD_OP_SETALLOCHINT: return do_write_op([this, &osd_op](auto& backend, auto& os, auto& txn) { return backend.set_allochint(os, osd_op, txn, delta_stats); - }, true); + }); case CEPH_OSD_OP_SETXATTR: return do_write_op([this, &osd_op](auto& backend, auto& os, auto& txn) { return backend.setxattr(os, osd_op, txn, delta_stats); @@ -655,7 +655,7 @@ OpsExecuter::do_execute_op(OSDOp& osd_op) case CEPH_OSD_OP_WATCH: return do_write_op([this, &osd_op](auto& backend, auto& os, auto& txn) { return do_op_watch(osd_op, os, txn); - }, /* user modify=*/false); + }, modified_by::sys); case CEPH_OSD_OP_LIST_WATCHERS: return do_read_op([this, &osd_op](auto&, const auto& os) { return do_op_list_watchers(osd_op, os); diff --git a/src/crimson/osd/ops_executer.h b/src/crimson/osd/ops_executer.h index 7e5c89176db..34241606cac 100644 --- a/src/crimson/osd/ops_executer.h +++ b/src/crimson/osd/ops_executer.h @@ -232,8 +232,13 @@ private: return do_const_op(std::forward(f)); } + enum class modified_by { + user, + sys, + }; + template - auto do_write_op(Func&& f, bool um=true); + auto do_write_op(Func&& f, modified_by m = modified_by::user); decltype(auto) dont_do_legacy_op() { return crimson::ct_error::operation_not_supported::make();