]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "crimson/os/seastore/async_cleaner: avoid its header dependence on"
authorMatan Breizman <mbreizma@redhat.com>
Mon, 9 Feb 2026 08:50:25 +0000 (08:50 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Mon, 9 Feb 2026 08:50:25 +0000 (08:50 +0000)
This reverts commit 1aae6f34b68faf15a8691f599420f23d5a84943e.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/os/seastore/async_cleaner.cc
src/crimson/os/seastore/async_cleaner.h

index b3c460173c9448ffde6daf424adc7fb6c77cd519..c52bcb75659c937608f369956ee76286e5361000 100644 (file)
@@ -1150,22 +1150,14 @@ double SegmentCleaner::calc_gc_benefit_cost(
           (2 * age_factor - 2) * util + 1);
 }
 
-using do_reclaim_space_ertr = base_ertr;
-using do_reclaim_space_ret = do_reclaim_space_ertr::future<>;
-do_reclaim_space_ret do_reclaim_space(
+SegmentCleaner::do_reclaim_space_ret
+SegmentCleaner::do_reclaim_space(
     const std::vector<CachedExtentRef> &backref_extents,
     const backref_mapping_list_t &pin_list,
     std::size_t &reclaimed,
-    std::size_t &runs,
-    ExtentCallbackInterface &extent_callback,
-    bool is_cold,
-    BackrefManager &backref_manager,
-    sea_time_point modify_time,
-    paddr_t start_pos,
-    paddr_t end_pos,
-    rewrite_gen_t target_generation)
-{
-  auto& shard_stats = extent_callback.get_shard_stats();
+    std::size_t &runs)
+{
+  auto& shard_stats = extent_callback->get_shard_stats();
   if (is_cold) {
     ++(shard_stats.cleaner_cold_num);
   } else {
@@ -1182,10 +1174,8 @@ do_reclaim_space_ret do_reclaim_space(
   //   tree doesn't match the extent's paddr
   // 3. the extent is physical and doesn't exist in the
   //   lba tree, backref tree or backref cache;
-  return repeat_eagain([&extent_callback, &backref_extents,
-                       &shard_stats, &pin_list, &reclaimed,
-                       &runs, is_cold, &backref_manager,
-                       modify_time, start_pos, end_pos, target_generation] {
+  return repeat_eagain([this, &backref_extents, &shard_stats,
+                        &pin_list, &reclaimed, &runs] {
     reclaimed = 0;
     runs++;
     transaction_type_t src;
@@ -1196,23 +1186,21 @@ do_reclaim_space_ret do_reclaim_space(
       src = Transaction::src_t::CLEANER_MAIN;
       ++(shard_stats.repeat_cleaner_main_num);
     }
-    return extent_callback.with_transaction_intr(
+    return extent_callback->with_transaction_intr(
       src,
       "clean_reclaim_space",
       CACHE_HINT_NOCACHE,
-      [&extent_callback, &backref_extents, &pin_list, modify_time,
-      &backref_manager, &reclaimed, start_pos, end_pos,
-      target_generation](auto &t)
+      [this, &backref_extents, &pin_list, &reclaimed](auto &t)
     {
       return seastar::do_with(
         std::vector<CachedExtentRef>(backref_extents),
-        [&extent_callback, &t, &reclaimed, &pin_list, modify_time,
-       &backref_manager, start_pos, end_pos, target_generation](auto &extents)
+        [this, &t, &reclaimed, &pin_list](auto &extents)
       {
         LOG_PREFIX(SegmentCleaner::do_reclaim_space);
         // calculate live extents
         auto cached_backref_entries =
-          backref_manager.get_cached_backref_entries_in_range(start_pos, end_pos);
+          backref_manager.get_cached_backref_entries_in_range(
+            reclaim_state->start_pos, reclaim_state->end_pos);
         backref_entry_query_set_t backref_entries;
         for (auto &pin : pin_list) {
           backref_entries.emplace(
@@ -1235,10 +1223,10 @@ do_reclaim_space_ret do_reclaim_space(
                t, backref_entries.size(), extents.size());
        return seastar::do_with(
          std::move(backref_entries),
-         [&extent_callback, &extents, &t](auto &backref_entries) {
+         [this, &extents, &t](auto &backref_entries) {
          return trans_intr::parallel_for_each(
            backref_entries,
-           [&extent_callback, &extents, &t](auto &ent)
+           [this, &extents, &t](auto &ent)
          {
            LOG_PREFIX(SegmentCleaner::do_reclaim_space);
            TRACET("getting extent of type {} at {}~0x{:x}",
@@ -1246,7 +1234,7 @@ do_reclaim_space_ret do_reclaim_space(
              ent.type,
              ent.paddr,
              ent.len);
-           return extent_callback.get_extents_if_live(
+           return extent_callback->get_extents_if_live(
              t, ent.type, ent.paddr, ent.laddr, ent.len
            ).si_then([FNAME, &extents, &ent, &t](auto list) {
              if (list.empty()) {
@@ -1258,22 +1246,21 @@ do_reclaim_space_ret do_reclaim_space(
              }
            });
          });
-       }).si_then([FNAME, &extents, &extent_callback,
-                   &reclaimed, &t, modify_time, target_generation] {
+       }).si_then([FNAME, &extents, this, &reclaimed, &t] {
           DEBUGT("reclaim {} extents", t, extents.size());
           // rewrite live extents
+          auto modify_time = segments[reclaim_state->get_segment_id()].modify_time;
           return trans_intr::do_for_each(
             extents,
-            [&extent_callback, modify_time, &t,
-           &reclaimed, target_generation](auto ext)
+            [this, modify_time, &t, &reclaimed](auto ext)
           {
             reclaimed += ext->get_length();
-            return extent_callback.rewrite_extent(
-                t, ext, target_generation, modify_time);
+            return extent_callback->rewrite_extent(
+                t, ext, reclaim_state->target_generation, modify_time);
           });
         });
-      }).si_then([&extent_callback, &t] {
-        return extent_callback.submit_transaction_direct(t);
+      }).si_then([this, &t] {
+        return extent_callback->submit_transaction_direct(t);
       });
     });
   }).finally([&shard_stats] {
@@ -1365,14 +1352,7 @@ SegmentCleaner::clean_space_ret SegmentCleaner::clean_space()
           backref_extents,
           pin_list,
           reclaimed,
-          runs,
-         *extent_callback,
-         is_cold,
-         backref_manager,
-         segments[reclaim_state->get_segment_id()].modify_time,
-         reclaim_state->start_pos,
-         reclaim_state->end_pos,
-         reclaim_state->target_generation
+          runs
       ).safe_then([this, FNAME, pavail_ratio, start, &reclaimed, &runs] {
         stats.reclaiming_bytes += reclaimed;
         auto d = seastar::lowres_system_clock::now() - start;
index dfdb031bf7f659cf1f2f0d2766e7b027d695d571..0f335f4edfb8db47ef11eb054e5ce6bb8047e38a 100644 (file)
@@ -18,6 +18,7 @@
 #include "crimson/os/seastore/transaction.h"
 #include "crimson/os/seastore/transaction_interruptor.h"
 #include "crimson/os/seastore/segment_seq_allocator.h"
+#include "crimson/os/seastore/backref_mapping.h"
 
 namespace crimson::os::seastore {
 
@@ -1535,6 +1536,14 @@ private:
   };
   std::optional<reclaim_state_t> reclaim_state;
 
+  using do_reclaim_space_ertr = base_ertr;
+  using do_reclaim_space_ret = do_reclaim_space_ertr::future<>;
+  do_reclaim_space_ret do_reclaim_space(
+    const std::vector<CachedExtentRef> &backref_extents,
+    const backref_mapping_list_t &pin_list,
+    std::size_t &reclaimed,
+    std::size_t &runs);
+
   /*
    * Segments calculations
    */