From: Xuehan Xu Date: Tue, 10 Aug 2021 04:47:12 +0000 (+0800) Subject: crimson/store_nbd: involve the extent placement manager and the scanner X-Git-Tag: v17.1.0~919^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9365da1ddd49965ce2ae7c2b9cc68d63f71377a2;p=ceph.git crimson/store_nbd: involve the extent placement manager and the scanner Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/tools/store_nbd/tm_driver.cc b/src/crimson/tools/store_nbd/tm_driver.cc index c6182de0320c..c933448675e6 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()