From: myoungwon oh Date: Thu, 12 May 2022 07:32:34 +0000 (+0900) Subject: test/seastore: use tm_make_config_t to get default_placement_hint X-Git-Tag: v18.0.0~857^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9fe59429fc2ef17e2bec329109713eb63ffc74c9;p=ceph-ci.git test/seastore: use tm_make_config_t to get default_placement_hint Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 157c3fadbaa..ffaf6ebf39a 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) { - tm_make_config_t config {false, false}; + tm_make_config_t config; + config.detailed = false; auto tm = make_transaction_manager(config); auto cm = std::make_unique(*tm); return std::make_unique( diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 3834dd78de4..c21e5d27d58 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -649,7 +649,7 @@ TransactionManagerRef make_transaction_manager(tm_make_config_t config) *cache, config.detailed); JournalRef journal; - if (!config.cbjournal) { + if (config.j_type == journal_type::SEGMENT_JOURNAL) { 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 efdee90c669..59f561888ab 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -593,11 +593,14 @@ using TransactionManagerRef = std::unique_ptr; struct tm_make_config_t { bool detailed = true; - bool cbjournal = false; + journal_type j_type = journal_type::SEGMENT_JOURNAL; + placement_hint_t default_placement_hint = + placement_hint_t::HOT; static tm_make_config_t get_default() { return tm_make_config_t { true, - false + journal_type::SEGMENT_JOURNAL, + placement_hint_t::HOT }; } }; diff --git a/src/crimson/tools/store_nbd/tm_driver.cc b/src/crimson/tools/store_nbd/tm_driver.cc index 549ef8e657b..5ee810f682e 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_config_t config {false, false}; + tm_make_config_t config; + config.detailed = false; tm = make_transaction_manager(config); tm->add_device(device.get(), true); } diff --git a/src/test/crimson/seastore/test_transaction_manager.cc b/src/test/crimson/seastore/test_transaction_manager.cc index 0219f2dffe8..549ccaf4f17 100644 --- a/src/test/crimson/seastore/test_transaction_manager.cc +++ b/src/test/crimson/seastore/test_transaction_manager.cc @@ -58,6 +58,7 @@ struct transaction_manager_test_t : std::random_device rd; std::mt19937 gen; + tm_make_config_t tm_config; transaction_manager_test_t(std::size_t num_devices) : TMTestState(num_devices), gen(rd()) { @@ -72,16 +73,14 @@ struct transaction_manager_test_t : return static_cast(std::uniform_int_distribution<>(0, 255)(gen)); } - bool for_segmented() { - std::string j_type = GetParam(); - return j_type == "segmented"; - } seastar::future<> set_up_fut() final { std::string j_type = GetParam(); if (j_type == "segmented") { - return tm_setup(); + return tm_setup(tm_config); } else if (j_type == "circularbounded") { - return tm_setup(journal_type::CIRCULARBOUNDED_JOURNAL); + tm_config.j_type = journal_type::CIRCULARBOUNDED_JOURNAL; + tm_config.default_placement_hint = placement_hint_t::REWRITE; + return tm_setup(tm_config); } else { ceph_assert(0 == "no support"); } @@ -625,7 +624,7 @@ struct transaction_manager_test_t : [&, this](auto) { return tm->alloc_extent( *(t.t), L_ADDR_MIN, size, - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE + tm_config.default_placement_hint ).si_then([&, this](auto extent) { extent->set_contents(get_random_contents()); EXPECT_FALSE( @@ -668,7 +667,7 @@ struct transaction_manager_test_t : t, i * BSIZE, BSIZE, - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(i * BSIZE, extent->get_laddr()); if (try_submit_transaction(std::move(t))) break; @@ -736,7 +735,7 @@ TEST_P(tm_single_device_test_t, basic) ADDR, SIZE, 'a', - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(ADDR, extent->get_laddr()); check_mappings(t); check(); @@ -758,7 +757,7 @@ TEST_P(tm_single_device_test_t, mutate) ADDR, SIZE, 'a', - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(ADDR, extent->get_laddr()); check_mappings(t); check(); @@ -800,7 +799,7 @@ TEST_P(tm_single_device_test_t, allocate_lba_conflict) ADDR, SIZE, 'a', - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(ADDR, extent->get_laddr()); check_mappings(t); check(); @@ -810,7 +809,7 @@ TEST_P(tm_single_device_test_t, allocate_lba_conflict) ADDR2, SIZE, 'a', - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(ADDR2, extent2->get_laddr()); check_mappings(t2); extent2.reset(); @@ -831,7 +830,7 @@ TEST_P(tm_single_device_test_t, mutate_lba_conflict) t, laddr_t(i * SIZE), SIZE, - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); } check_mappings(t); submit_transaction(std::move(t)); @@ -874,7 +873,7 @@ TEST_P(tm_single_device_test_t, concurrent_mutate_lba_no_conflict) t, laddr_t(i * SIZE), SIZE, - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); } submit_transaction(std::move(t)); } @@ -905,7 +904,7 @@ TEST_P(tm_single_device_test_t, create_remove_same_transaction) ADDR, SIZE, 'a', - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(ADDR, extent->get_laddr()); check_mappings(t); dec_ref(t, ADDR); @@ -916,7 +915,7 @@ TEST_P(tm_single_device_test_t, create_remove_same_transaction) ADDR, SIZE, 'a', - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); submit_transaction(std::move(t)); check(); @@ -937,7 +936,7 @@ TEST_P(tm_single_device_test_t, split_merge_read_same_transaction) t, laddr_t(i * SIZE), SIZE, - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); } check_mappings(t); submit_transaction(std::move(t)); @@ -969,7 +968,7 @@ TEST_P(tm_single_device_test_t, inc_dec_ref) ADDR, SIZE, 'a', - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(ADDR, extent->get_laddr()); check_mappings(t); check(); @@ -1016,7 +1015,7 @@ TEST_P(tm_single_device_test_t, cause_lba_split) i * SIZE, SIZE, (char)(i & 0xFF), - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(i * SIZE, extent->get_laddr()); submit_transaction(std::move(t)); } @@ -1037,7 +1036,7 @@ TEST_P(tm_single_device_test_t, random_writes) t, i * BSIZE, BSIZE, - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); ASSERT_EQ(i * BSIZE, extent->get_laddr()); submit_transaction(std::move(t)); } @@ -1056,7 +1055,7 @@ TEST_P(tm_single_device_test_t, random_writes) t, TOTAL + (k * PADDING_SIZE), PADDING_SIZE, - for_segmented() ? placement_hint_t::HOT : placement_hint_t::REWRITE); + tm_config.default_placement_hint); dec_ref(t, padding->get_laddr()); } submit_transaction(std::move(t)); diff --git a/src/test/crimson/seastore/transaction_manager_test_state.h b/src/test/crimson/seastore/transaction_manager_test_state.h index 96456571fad..dfa3b8e2eb6 100644 --- a/src/test/crimson/seastore/transaction_manager_test_state.h +++ b/src/test/crimson/seastore/transaction_manager_test_state.h @@ -26,7 +26,7 @@ protected: segment_manager::EphemeralSegmentManagerRef segment_manager; std::list secondary_segment_managers; std::unique_ptr rb_device; - journal_type j_type = journal_type::SEGMENT_JOURNAL; + tm_make_config_t tm_config; EphemeralTestState(std::size_t num_segment_managers) { assert(num_segment_managers > 0); @@ -62,13 +62,14 @@ protected: _mount().handle_error(crimson::ct_error::assert_all{}).get0(); } - seastar::future<> tm_setup(journal_type j_type = journal_type::SEGMENT_JOURNAL) { - this->j_type = j_type; + seastar::future<> tm_setup( + tm_make_config_t config = tm_make_config_t::get_default()) { + tm_config = config; segment_manager = segment_manager::create_test_ephemeral(); for (auto &sec_sm : secondary_segment_managers) { sec_sm = segment_manager::create_test_ephemeral(); } - if (j_type == journal_type::CIRCULARBOUNDED_JOURNAL) { + if (tm_config.j_type == journal_type::CIRCULARBOUNDED_JOURNAL) { auto config = journal::CircularBoundedJournal::mkfs_config_t::get_default(); rb_device.reset(new nvme_device::TestMemory(config.total_size)); @@ -121,7 +122,7 @@ protected: for (auto &sec_sm : secondary_segment_managers) { sec_sm.reset(); } - if (j_type == journal_type::CIRCULARBOUNDED_JOURNAL) { + if (tm_config.j_type == journal_type::CIRCULARBOUNDED_JOURNAL) { rb_device.reset(); } }); @@ -154,11 +155,9 @@ protected: TMTestState(std::size_t num_devices) : EphemeralTestState(num_devices) {} virtual void _init() override { - tm_make_config_t config; - config.cbjournal = j_type == journal_type::SEGMENT_JOURNAL ? false : true; - tm = make_transaction_manager(config); + tm = make_transaction_manager(tm_config); tm->add_device(segment_manager.get(), true); - if (j_type == journal_type::CIRCULARBOUNDED_JOURNAL) { + if (tm_config.j_type == journal_type::CIRCULARBOUNDED_JOURNAL) { tm->add_device(rb_device.get(), false); static_cast(tm->get_journal())-> add_device(rb_device.get()); @@ -201,7 +200,7 @@ protected: } virtual FuturizedStore::mkfs_ertr::future<> _mkfs() { - if (j_type == journal_type::SEGMENT_JOURNAL) { + if (tm_config.j_type == journal_type::SEGMENT_JOURNAL) { return tm->mkfs( ).handle_error( crimson::ct_error::assert_all{"Error in mkfs"}