Merge pull request #69615 from xxhdx1985126/wip-77548

crimson/osd/pg_backend: mark the omaps of the object dirty when removing omap keys

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
This commit is contained in:
Xuehan Xu 2026-06-30 10:38:19 +08:00 committed by GitHub
commit c2a69f1663
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 7 deletions

View File

@ -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) {

View File

@ -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();
}

View File

@ -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<crimson::ct_error::enoent>;
using omap_clear_iertr =
::crimson::interruptible::interruptible_errorator<