From 9365da1ddd49965ce2ae7c2b9cc68d63f71377a2 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Tue, 10 Aug 2021 12:47:12 +0800 Subject: [PATCH] crimson/store_nbd: involve the extent placement manager and the scanner Signed-off-by: Xuehan Xu --- src/crimson/tools/store_nbd/tm_driver.cc | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/crimson/tools/store_nbd/tm_driver.cc b/src/crimson/tools/store_nbd/tm_driver.cc index c6182de0320c1..c933448675e6e 100644 --- a/src/crimson/tools/store_nbd/tm_driver.cc +++ b/src/crimson/tools/store_nbd/tm_driver.cc @@ -127,14 +127,28 @@ seastar::future TMDriver::read( void TMDriver::init() { + auto scanner = std::make_unique(*segment_manager); + auto& scanner_ref = *scanner.get(); auto segment_cleaner = std::make_unique( SegmentCleaner::config_t::get_default(), + std::move(scanner), false /* detailed */); segment_cleaner->mount(*segment_manager); - auto journal = std::make_unique(*segment_manager); + auto journal = std::make_unique(*segment_manager, scanner_ref); auto cache = std::make_unique(*segment_manager); auto lba_manager = lba_manager::create_lba_manager(*segment_manager, *cache); + auto epm = std::make_unique(*cache, *lba_manager); + + epm->add_allocator( + device_type_t::SEGMENTED, + std::make_unique( + *segment_cleaner, + *segment_manager, + *lba_manager, + *journal, + *cache)); + journal->set_segment_provider(&*segment_cleaner); tm = std::make_unique( @@ -142,7 +156,8 @@ void TMDriver::init() std::move(segment_cleaner), std::move(journal), std::move(cache), - std::move(lba_manager)); + std::move(lba_manager), + std::move(epm)); } void TMDriver::clear() -- 2.39.5