]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/pg_backend: mark the omaps of the object dirty when removing 69615/head
authorXuehan Xu <xuxuehan@qianxin.com>
Sun, 21 Jun 2026 03:48:01 +0000 (11:48 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Sun, 28 Jun 2026 08:33:11 +0000 (16:33 +0800)
omap keys

Fixes: https://tracker.ceph.com/issues/77548
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/osd/ops_executer.cc
src/crimson/osd/pg_backend.cc
src/crimson/osd/pg_backend.h

index 343b93b2dbca0f703c7d74da0f36e2b6dcdb2bd8..5be20cc90e5a254dd0bdb83a172f60211fff6104 100644 (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) {
index 0c31e28f333d0ddabeba17a2dc3df3a74691557e..77b8dffdf010da01e32f8b6ba6c3e022158da3f2 100644 (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();
 }
index ceecc354dce2fdd3531cdcf3fce6b564f7377591..e612a611c2d5cc15bb1bf0c3b8db821a1350512b 100644 (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<