From 1c7942c87eaf846c02a09a5975bd14f2b2f02be8 Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Fri, 6 May 2022 14:13:23 +0900 Subject: [PATCH] seastore: use config_t instead of parameter in make_transaction_manager Signed-off-by: Myoungwon Oh --- src/crimson/os/seastore/seastore.cc | 3 ++- src/crimson/os/seastore/transaction_manager.cc | 6 +++--- src/crimson/os/seastore/transaction_manager.h | 12 +++++++++++- src/crimson/tools/store_nbd/tm_driver.cc | 3 ++- .../seastore/transaction_manager_test_state.h | 7 ++++--- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 5f007689791..157c3fadbaa 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -1692,7 +1692,8 @@ seastar::future> make_seastore( return Device::make_device( device ).then([&device](DeviceRef device_obj) { - auto tm = make_transaction_manager(false /* detailed */); + tm_make_config_t config {false, false}; + auto tm = make_transaction_manager(config); auto cm = std::make_unique(*tm); return std::make_unique( device, diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 7812e915c14..5ff7d9afe5b 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -634,7 +634,7 @@ TransactionManager::get_extent_if_live_ret TransactionManager::get_extent_if_liv TransactionManager::~TransactionManager() {} -TransactionManagerRef make_transaction_manager(bool detailed, bool cbjournal) +TransactionManagerRef make_transaction_manager(tm_make_config_t config) { auto epm = std::make_unique(); auto cache = std::make_unique(*epm); @@ -646,9 +646,9 @@ TransactionManagerRef make_transaction_manager(bool detailed, bool cbjournal) std::move(sms), *backref_manager, *cache, - detailed); + config.detailed); JournalRef journal; - if (!cbjournal) { + if (!config.cbjournal) { journal = journal::make_segmented(*segment_cleaner); } else { journal = journal::make_circularbounded( diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index 0e5f3b8ac67..efdee90c669 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -591,6 +591,16 @@ public: }; using TransactionManagerRef = std::unique_ptr; -TransactionManagerRef make_transaction_manager(bool detailed, bool cbjournal = false); +struct tm_make_config_t { + bool detailed = true; + bool cbjournal = false; + static tm_make_config_t get_default() { + return tm_make_config_t { + true, + false + }; + } +}; +TransactionManagerRef make_transaction_manager(tm_make_config_t config); } diff --git a/src/crimson/tools/store_nbd/tm_driver.cc b/src/crimson/tools/store_nbd/tm_driver.cc index 408b3ed7015..549ef8e657b 100644 --- a/src/crimson/tools/store_nbd/tm_driver.cc +++ b/src/crimson/tools/store_nbd/tm_driver.cc @@ -131,7 +131,8 @@ seastar::future TMDriver::read( void TMDriver::init() { - tm = make_transaction_manager(false /* detailed */); + tm_make_config_t config {false, false}; + tm = make_transaction_manager(config); tm->add_device(device.get(), true); } diff --git a/src/test/crimson/seastore/transaction_manager_test_state.h b/src/test/crimson/seastore/transaction_manager_test_state.h index 072bb8eaecf..96456571fad 100644 --- a/src/test/crimson/seastore/transaction_manager_test_state.h +++ b/src/test/crimson/seastore/transaction_manager_test_state.h @@ -129,7 +129,7 @@ protected: }; auto get_seastore(SeaStore::MDStoreRef mdstore, SegmentManagerRef sm) { - auto tm = make_transaction_manager(true); + auto tm = make_transaction_manager(tm_make_config_t::get_default()); auto cm = std::make_unique(*tm); return std::make_unique( "", @@ -154,8 +154,9 @@ protected: TMTestState(std::size_t num_devices) : EphemeralTestState(num_devices) {} virtual void _init() override { - tm = make_transaction_manager(true, - j_type == journal_type::SEGMENT_JOURNAL ? false : true); + tm_make_config_t config; + config.cbjournal = j_type == journal_type::SEGMENT_JOURNAL ? false : true; + tm = make_transaction_manager(config); tm->add_device(segment_manager.get(), true); if (j_type == journal_type::CIRCULARBOUNDED_JOURNAL) { tm->add_device(rb_device.get(), false); -- 2.39.5