From: Xuehan Xu Date: Sun, 21 Jun 2026 03:48:01 +0000 (+0800) Subject: crimson/osd/pg_backend: mark the omaps of the object dirty when removing X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8e66072ec58666b9b504fb93b9ebd9daa42de6ab;p=ceph.git crimson/osd/pg_backend: mark the omaps of the object dirty when removing omap keys Fixes: https://tracker.ceph.com/issues/77548 Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index 343b93b2dbc..5be20cc90e5 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -806,8 +806,8 @@ OpsExecuter::do_execute_op(OSDOp& osd_op) if (!pg.get_pgpool().info.supports_omap()) { return crimson::ct_error::operation_not_supported::make(); }*/ - return do_write_op([&osd_op](auto& backend, auto& os, auto& txn) { - return backend.omap_remove_key(os, osd_op, txn); + return do_write_op([&osd_op, this](auto& backend, auto& os, auto& txn) { + return backend.omap_remove_key(os, osd_op, txn, *osd_op_params, delta_stats); }); case CEPH_OSD_OP_OMAPCLEAR: return do_write_op([this, &osd_op](auto& backend, auto& os, auto& txn) { diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 0c31e28f333..77b8dffdf01 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -1756,7 +1756,9 @@ PGBackend::interruptible_future<> PGBackend::omap_remove_range( PGBackend::interruptible_future<> PGBackend::omap_remove_key( ObjectState& os, const OSDOp& osd_op, - ceph::os::Transaction& txn) + ceph::os::Transaction& txn, + osd_op_params_t &osd_op_params, + object_stat_sum_t &delta_stats) { ceph::bufferlist to_rm_bl; try { @@ -1766,9 +1768,8 @@ PGBackend::interruptible_future<> PGBackend::omap_remove_key( throw crimson::osd::invalid_argument{}; } txn.omap_rmkeys(coll->get_cid(), ghobject_t{os.oi.soid}, to_rm_bl); - // TODO: - // ctx->clean_regions.mark_omap_dirty(); - // ctx->delta_stats.num_wr++; + osd_op_params.clean_regions.mark_omap_dirty(); + delta_stats.num_wr++; os.oi.clear_omap_digest(); return seastar::now(); } diff --git a/src/crimson/osd/pg_backend.h b/src/crimson/osd/pg_backend.h index ceecc354dce..e612a611c2d 100644 --- a/src/crimson/osd/pg_backend.h +++ b/src/crimson/osd/pg_backend.h @@ -404,7 +404,9 @@ public: interruptible_future<> omap_remove_key( ObjectState& os, const OSDOp& osd_op, - ceph::os::Transaction& trans); + ceph::os::Transaction& trans, + osd_op_params_t &osd_op_params, + object_stat_sum_t &delta_stats); using omap_clear_ertr = crimson::errorator; using omap_clear_iertr = ::crimson::interruptible::interruptible_errorator<