]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seatore: drop the temporary InterruptedTransactionManager
authorYingxin Cheng <yingxin.cheng@intel.com>
Fri, 6 Aug 2021 06:14:23 +0000 (14:14 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Tue, 10 Aug 2021 03:55:54 +0000 (11:55 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/transaction_manager.h
src/test/crimson/seastore/test_transaction_manager.cc
src/test/crimson/seastore/transaction_manager_test_state.h

index df21268819ec81a4b5f191ca4b9896ad42f26701..0a8036967dd3ef54b1cd8e202410ab6c77375e85 100644 (file)
@@ -548,133 +548,4 @@ public:
 };
 using TransactionManagerRef = std::unique_ptr<TransactionManager>;
 
-#define FORWARD(METHOD)                                        \
-  template <typename... Args>                          \
-  auto METHOD(Args&&... args) const {                  \
-    return tm->METHOD(std::forward<Args>(args)...);    \
-  }
-
-#define PARAM_FORWARD(METHOD)                                  \
-  template <typename T, typename... Args>                      \
-  auto METHOD(Args&&... args) const {                          \
-    return tm->METHOD<T>(std::forward<Args>(args)...); \
-  }
-
-#define INT_FORWARD(METHOD)                                            \
-  template <typename... Args>                                          \
-  auto METHOD(Transaction &t, Args&&... args) const {                  \
-    return with_trans_intr(                                            \
-      t,                                                               \
-      [this](auto&&... args) {                                         \
-       return tm->METHOD(std::forward<decltype(args)>(args)...);       \
-      },                                                               \
-      std::forward<Args>(args)...);                                    \
-  }
-
-#define PARAM_INT_FORWARD(METHOD)                                      \
-  template <typename T, typename... Args>                              \
-  auto METHOD(Transaction &t, Args&&... args) const {                  \
-    return with_trans_intr(                                            \
-      t,                                                               \
-      [this](auto&&... args) {                                         \
-       return tm->METHOD<T>(std::forward<decltype(args)>(args)...);    \
-      },                                                               \
-      std::forward<Args>(args)...);                                    \
-  }
-
-/// Temporary translator to non-interruptible futures
-class InterruptedTransactionManager {
-  TransactionManager *tm = nullptr;
-public:
-  InterruptedTransactionManager() = default;
-  InterruptedTransactionManager(const InterruptedTransactionManager &) = default;
-  InterruptedTransactionManager(InterruptedTransactionManager &&) = default;
-  InterruptedTransactionManager(TransactionManager &tm) : tm(&tm) {}
-
-  InterruptedTransactionManager &operator=(
-    const InterruptedTransactionManager &) = default;
-  InterruptedTransactionManager &operator=(
-    InterruptedTransactionManager &&) = default;
-
-  TransactionManager &get_tm() const { return *tm; }
-
-  FORWARD(mkfs)
-  FORWARD(mount)
-  FORWARD(close)
-  FORWARD(create_transaction)
-  FORWARD(create_weak_transaction)
-  FORWARD(reset_transaction_preserve_handle)
-  INT_FORWARD(get_pin)
-  INT_FORWARD(get_pins)
-  PARAM_INT_FORWARD(pin_to_extent)
-  PARAM_INT_FORWARD(read_extent)
-  FORWARD(get_mutable_extent)
-  INT_FORWARD(inc_ref)
-  INT_FORWARD(dec_ref)
-  PARAM_INT_FORWARD(alloc_extent)
-  INT_FORWARD(reserve_region)
-  INT_FORWARD(find_hole)
-  PARAM_INT_FORWARD(alloc_extents)
-  INT_FORWARD(submit_transaction)
-
-  INT_FORWARD(read_root_meta)
-  INT_FORWARD(update_root_meta)
-  INT_FORWARD(read_onode_root)
-  FORWARD(write_onode_root)
-  INT_FORWARD(read_collection_root)
-  FORWARD(write_collection_root)
-  FORWARD(get_block_size)
-  FORWARD(store_stat)
-
-  FORWARD(get_segment_cleaner)
-  FORWARD(get_lba_manager)
-
-  void reset() { tm = nullptr; }
-};
-
-class InterruptedTMRef {
-  std::unique_ptr<TransactionManager> ref;
-  std::optional<InterruptedTransactionManager> itm;
-public:
-  InterruptedTMRef() {}
-
-  template <typename... T>
-  InterruptedTMRef(T&&... args)
-    : ref(std::make_unique<TransactionManager>(std::forward<T>(args)...)),
-      itm(*ref) {}
-
-  InterruptedTMRef(std::unique_ptr<TransactionManager> tm)
-    : ref(std::move(tm)), itm(*ref) {}
-
-  InterruptedTMRef(InterruptedTMRef &&itmr)
-    : ref(std::move(itmr.ref)), itm(*ref) {}
-
-  InterruptedTMRef &operator=(std::unique_ptr<TransactionManager> tm) {
-    this->~InterruptedTMRef();
-    new (this) InterruptedTMRef(std::move(tm));
-    return *this;
-  }
-
-  InterruptedTMRef &operator=(InterruptedTMRef &&rhs) {
-    this->~InterruptedTMRef();
-    new (this) InterruptedTMRef(std::move(rhs));
-    return *this;
-  }
-
-  void reset() {
-    itm = std::nullopt;
-    ref.reset();
-  }
-
-  auto &operator*() const {
-    return *itm;
-  }
-
-  auto operator->() const {
-    return &*itm;
-  }
-};
-
-
-
 }
index 523934ed2ed24b06956e87b1a785805f85a3b63d..c3e59117b1ce62ed6de05c2d34e9372de8b2d5ac 100644 (file)
@@ -361,10 +361,9 @@ struct transaction_manager_test_t :
     laddr_t hint,
     extent_len_t len,
     char contents) {
-    auto extent = itm.alloc_extent<TestBlock>(
-      *(t.t),
-      hint,
-      len).unsafe_get0();
+    auto extent = with_trans_intr(*(t.t), [&](auto& trans) {
+      return tm->alloc_extent<TestBlock>(trans, hint, len);
+    }).unsafe_get0();
     extent->set_contents(contents);
     EXPECT_FALSE(test_mappings.contains(extent->get_laddr(), t.mapping_delta));
     EXPECT_EQ(len, extent->get_length());
@@ -425,9 +424,9 @@ struct transaction_manager_test_t :
     ceph_assert(test_mappings.contains(addr, t.mapping_delta));
     ceph_assert(test_mappings.get(addr, t.mapping_delta).desc.len == len);
 
-    auto ext = itm.read_extent<TestBlock>(
-      *t.t, addr, len
-    ).unsafe_get0();
+    auto ext = with_trans_intr(*(t.t), [&](auto& trans) {
+      return tm->read_extent<TestBlock>(trans, addr, len);
+    }).unsafe_get0();
     EXPECT_EQ(addr, ext->get_laddr());
     return ext;
   }
@@ -441,9 +440,9 @@ struct transaction_manager_test_t :
 
     using ertr = with_trans_ertr<TransactionManager::read_extent_iertr>;
     using ret = ertr::future<TestBlockRef>;
-    auto ext = itm.read_extent<TestBlock>(
-      *t.t, addr, len
-    ).safe_then([](auto ext) -> ret {
+    auto ext = with_trans_intr(*(t.t), [&](auto& trans) {
+      return tm->read_extent<TestBlock>(trans, addr, len);
+    }).safe_then([](auto ext) -> ret {
       return ertr::make_ready_future<TestBlockRef>(ext);
     }).handle_error(
       [](const crimson::ct_error::eagain &e) {
@@ -468,7 +467,7 @@ struct transaction_manager_test_t :
       test_mappings.get(ref->get_laddr(), t.mapping_delta).desc.len ==
       ref->get_length());
 
-    auto ext = itm.get_mutable_extent(*t.t, ref)->cast<TestBlock>();
+    auto ext = tm->get_mutable_extent(*t.t, ref)->cast<TestBlock>();
     EXPECT_EQ(ext->get_laddr(), ref->get_laddr());
     EXPECT_EQ(ext->get_desc(), ref->get_desc());
     mutator.mutate(*ext, gen);
@@ -490,7 +489,9 @@ struct transaction_manager_test_t :
     ceph_assert(test_mappings.contains(offset, t.mapping_delta));
     ceph_assert(test_mappings.get(offset, t.mapping_delta).refcount > 0);
 
-    auto refcnt = itm.inc_ref(*t.t, offset).unsafe_get0();
+    auto refcnt = with_trans_intr(*(t.t), [&](auto& trans) {
+      return tm->inc_ref(trans, offset);
+    }).unsafe_get0();
     auto check_refcnt = test_mappings.inc_ref(offset, t.mapping_delta);
     EXPECT_EQ(refcnt, check_refcnt);
   }
@@ -499,7 +500,9 @@ struct transaction_manager_test_t :
     ceph_assert(test_mappings.contains(offset, t.mapping_delta));
     ceph_assert(test_mappings.get(offset, t.mapping_delta).refcount > 0);
 
-    auto refcnt = itm.dec_ref(*t.t, offset).unsafe_get0();
+    auto refcnt = with_trans_intr(*(t.t), [&](auto& trans) {
+      return tm->dec_ref(trans, offset);
+    }).unsafe_get0();
     auto check_refcnt = test_mappings.dec_ref(offset, t.mapping_delta);
     EXPECT_EQ(refcnt, check_refcnt);
     if (refcnt == 0)
@@ -534,7 +537,7 @@ struct transaction_manager_test_t :
   bool try_submit_transaction(test_transaction_t t) {
     using ertr = with_trans_ertr<TransactionManager::submit_transaction_iertr>;
     using ret = ertr::future<bool>;
-    bool success = itm.submit_transaction(*t.t
+    bool success = submit_transaction_fut(*t.t
     ).safe_then([]() -> ret {
       return ertr::make_ready_future<bool>(true);
     }).handle_error(
index ef343f5f464eb1db989d0bd91538173b94bb2328..d95fa45e164a3603c23fed06fab32a7f20bd1975 100644 (file)
@@ -101,7 +101,6 @@ auto get_seastore(SegmentManagerRef sm) {
 class TMTestState : public EphemeralTestState {
 protected:
   TransactionManagerRef tm;
-  InterruptedTransactionManager itm;
   LBAManager *lba_manager;
   SegmentCleaner *segment_cleaner;
 
@@ -109,7 +108,6 @@ protected:
 
   virtual void _init() {
     tm = get_transaction_manager(*segment_manager);
-    itm = InterruptedTransactionManager(*tm);
     segment_cleaner = tm->get_segment_cleaner();
     lba_manager = tm->get_lba_manager();
   }
@@ -117,7 +115,6 @@ protected:
   virtual void _destroy() {
     segment_cleaner = nullptr;
     lba_manager = nullptr;
-    itm.reset();
     tm.reset();
   }