From: Matan Breizman Date: Mon, 9 Feb 2026 08:50:25 +0000 (+0000) Subject: Revert "crimson/os/seastore/async_cleaner: avoid its header dependence on" X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e1dc5e508a4434b9404b59481ea2280892849d16;p=ceph.git Revert "crimson/os/seastore/async_cleaner: avoid its header dependence on" This reverts commit 1aae6f34b68faf15a8691f599420f23d5a84943e. Signed-off-by: Matan Breizman --- diff --git a/src/crimson/os/seastore/async_cleaner.cc b/src/crimson/os/seastore/async_cleaner.cc index b3c460173c94..c52bcb75659c 100644 --- a/src/crimson/os/seastore/async_cleaner.cc +++ b/src/crimson/os/seastore/async_cleaner.cc @@ -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 &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(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; diff --git a/src/crimson/os/seastore/async_cleaner.h b/src/crimson/os/seastore/async_cleaner.h index dfdb031bf7f6..0f335f4edfb8 100644 --- a/src/crimson/os/seastore/async_cleaner.h +++ b/src/crimson/os/seastore/async_cleaner.h @@ -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; + 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 &backref_extents, + const backref_mapping_list_t &pin_list, + std::size_t &reclaimed, + std::size_t &runs); + /* * Segments calculations */