]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: snap trimming informs OpsExecuter about altered objects
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 6 Dec 2022 14:01:44 +0000 (14:01 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 28 Feb 2023 16:22:05 +0000 (16:22 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/ops_executer.h
src/crimson/osd/osd_operations/snaptrim_event.cc

index 14fd5a9c2d310b8d513d3812ff141ed19c90430a..b6b976ab02486b98f19520783c37a7f1327e2630 100644 (file)
@@ -42,6 +42,8 @@ class PG;
 
 // OpsExecuter -- a class for executing ops targeting a certain object.
 class OpsExecuter : public seastar::enable_lw_shared_from_this<OpsExecuter> {
+  friend class SnapTrimObjSubEvent;
+
   using call_errorator = crimson::errorator<
     crimson::stateful_ec,
     crimson::ct_error::enoent,
index dd089b8747cdb42ab195add356b81fec64a8035b..933ad6dcc5a613ba61e7741e17159054eeb16444 100644 (file)
@@ -4,6 +4,7 @@
 #include <ranges>
 
 #include "crimson/osd/osd_operations/snaptrim_event.h"
+#include "crimson/osd/ops_executer.h"
 #include "crimson/osd/pg.h"
 #include "include/expected.hpp"
 
@@ -297,6 +298,8 @@ SnapTrimObjSubEvent::remove_or_update(
 
     coi = object_info_t(coid);
 
+    auto smtxn = pg->osdriver.get_transaction(&txn);
+    OpsExecuter::snap_map_remove(coid, pg->snap_mapper, smtxn);
   } else {
     // save adjusted snaps for this object
     logger().info("{}: {} snaps {} -> {}",
@@ -326,6 +329,8 @@ SnapTrimObjSubEvent::remove_or_update(
        coi.mtime,
        0}
       );
+    auto smtxn = pg->osdriver.get_transaction(&txn);
+    OpsExecuter::snap_map_modify(coid, new_snaps, pg->snap_mapper, smtxn);
   }
 
   osd_op_p.at_version = pg->next_version();