]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson: clarify use of tm_make_config_t
authorSamuel Just <sjust@redhat.com>
Thu, 19 May 2022 05:15:51 +0000 (05:15 +0000)
committerSamuel Just <sjust@redhat.com>
Thu, 19 May 2022 05:29:05 +0000 (05:29 +0000)
Fixes: https://tracker.ceph.com/issues/55706
Introduced: 9fe59429fc2ef17e2bec329109713eb63ffc74c9
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/transaction_manager.h
src/crimson/tools/store_nbd/tm_driver.cc
src/test/crimson/seastore/test_transaction_manager.cc
src/test/crimson/seastore/transaction_manager_test_state.h

index ffaf6ebf39af5840de51fa67472542e3c5d7e444..4440d14568ed25debaa65c132b0a496647f19141 100644 (file)
@@ -1692,9 +1692,7 @@ seastar::future<std::unique_ptr<SeaStore>> make_seastore(
   return Device::make_device(
     device
   ).then([&device](DeviceRef device_obj) {
-    tm_make_config_t config;
-    config.detailed = false;
-    auto tm = make_transaction_manager(config);
+    auto tm = make_transaction_manager(tm_make_config_t::get_default());
     auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
     return std::make_unique<SeaStore>(
       device,
index f319d368b63f1b1b6b303b7d1d4907fb6075c686..41b7de9581c359bc63110cd1176125e3497bced5 100644 (file)
@@ -37,15 +37,40 @@ class Journal;
 struct tm_make_config_t {
   bool detailed = true;
   journal_type_t j_type = journal_type_t::SEGMENT_JOURNAL;
-  placement_hint_t default_placement_hint =
-    placement_hint_t::HOT;
+  placement_hint_t default_placement_hint = placement_hint_t::HOT;
+
   static tm_make_config_t get_default() {
+    return tm_make_config_t {
+      false,
+      journal_type_t::SEGMENT_JOURNAL,
+      placement_hint_t::HOT
+    };
+  }
+  static tm_make_config_t get_test_segmented_journal() {
     return tm_make_config_t {
       true,
       journal_type_t::SEGMENT_JOURNAL,
       placement_hint_t::HOT
     };
   }
+  static tm_make_config_t get_test_cb_journal() {
+    return tm_make_config_t {
+      true,
+      journal_type_t::CIRCULARBOUNDED_JOURNAL,
+      placement_hint_t::REWRITE
+    };
+  }
+
+  tm_make_config_t(const tm_make_config_t &) = default;
+  tm_make_config_t &operator=(const tm_make_config_t &) = default;
+private:
+  tm_make_config_t(
+    bool detailed,
+    journal_type_t j_type,
+    placement_hint_t default_placement_hint)
+    : detailed(detailed), j_type(j_type),
+      default_placement_hint(default_placement_hint)
+  {}
 };
 
 template <typename F>
index 5ee810f682e646701782cd994afca7ce33b2e098..a32471e148aedda894b68badebc7fa62790ebff3 100644 (file)
@@ -131,9 +131,7 @@ seastar::future<bufferlist> TMDriver::read(
 
 void TMDriver::init()
 {
-  tm_make_config_t config;
-  config.detailed = false;
-  tm = make_transaction_manager(config);
+  tm = make_transaction_manager(tm_make_config_t::get_default());
   tm->add_device(device.get(), true);
 }
 
index 93b30b0414fbe25c33b392cebf0f750d8da64e65..8ed60e430e08ae1697920e6d27b28aed4b789f88 100644 (file)
@@ -58,7 +58,6 @@ 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()) {
@@ -76,11 +75,9 @@ struct transaction_manager_test_t :
   seastar::future<> set_up_fut() final {
     std::string j_type = GetParam();
     if (j_type == "segmented") {
-      return tm_setup(tm_config);
+      return tm_setup(tm_make_config_t::get_test_segmented_journal());
     } else if (j_type == "circularbounded") {
-      tm_config.j_type = journal_type_t::CIRCULARBOUNDED_JOURNAL;
-      tm_config.default_placement_hint = placement_hint_t::REWRITE;
-      return tm_setup(tm_config);
+      return tm_setup(tm_make_config_t::get_test_cb_journal());
     } else {
       ceph_assert(0 == "no support");
     }
index f30fe92cd0a5bd0b8097213f39a8b023adea3713..b712effaf4be3f08c2e7e1452685551ce5dd62cf 100644 (file)
@@ -26,7 +26,7 @@ protected:
   segment_manager::EphemeralSegmentManagerRef segment_manager;
   std::list<segment_manager::EphemeralSegmentManagerRef> secondary_segment_managers;
   std::unique_ptr<nvme_device::NVMeBlockDevice> rb_device;
-  tm_make_config_t tm_config;
+  tm_make_config_t tm_config = tm_make_config_t::get_test_segmented_journal();
 
   EphemeralTestState(std::size_t num_segment_managers) {
     assert(num_segment_managers > 0);
@@ -63,7 +63,7 @@ protected:
   }
 
   seastar::future<> tm_setup(
-    tm_make_config_t config = tm_make_config_t::get_default()) {
+    tm_make_config_t config = tm_make_config_t::get_test_segmented_journal()) {
     tm_config = config;
     segment_manager = segment_manager::create_test_ephemeral();
     for (auto &sec_sm : secondary_segment_managers) {
@@ -128,7 +128,7 @@ protected:
 };
 
 auto get_seastore(SeaStore::MDStoreRef mdstore, SegmentManagerRef sm) {
-  auto tm = make_transaction_manager(tm_make_config_t::get_default());
+  auto tm = make_transaction_manager(tm_make_config_t::get_test_segmented_journal());
   auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
   return std::make_unique<SeaStore>(
     "",