]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/crimson/.../test_transaction_manager: reset ephemeral segment_manager state...
authorSamuel Just <sjust@redhat.com>
Thu, 27 Aug 2020 07:12:56 +0000 (00:12 -0700)
committerSamuel Just <sjust@redhat.com>
Mon, 19 Oct 2020 22:38:12 +0000 (15:38 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/segment_manager/ephemeral.cc
src/crimson/os/seastore/segment_manager/ephemeral.h
src/test/crimson/seastore/test_transaction_manager.cc

index ee336a153ec5384b91410feb5449a2f691b047f1..ee8e87e457fb9d99993ddf7a02a9b1dd06d2b3da 100644 (file)
@@ -116,6 +116,14 @@ EphemeralSegmentManager::~EphemeralSegmentManager()
   }
 }
 
+void EphemeralSegmentManager::remount()
+{
+  for (auto &i : segment_state) {
+    if (i == Segment::segment_state_t::OPEN)
+      i = Segment::segment_state_t::CLOSED;
+  }
+}
+
 SegmentManager::open_ertr::future<SegmentRef> EphemeralSegmentManager::open(
   segment_id_t id)
 {
index c5dd5a8485f679dce211d92177bd47e054d81690..4b43883b11218c348aa455aa627a2ae194895318 100644 (file)
@@ -72,6 +72,8 @@ public:
     return config.segment_size;
   }
 
+  void remount();
+
   // public so tests can bypass segment interface when simpler
   Segment::write_ertr::future<> segment_write(
     paddr_t addr,
index e381e2007aae3e659582588d803f194138a1659c..96e35c793d6c727caefa8394d2bbfd918f3bc2d7 100644 (file)
@@ -8,6 +8,7 @@
 #include "crimson/os/seastore/segment_cleaner.h"
 #include "crimson/os/seastore/cache.h"
 #include "crimson/os/seastore/transaction_manager.h"
+#include "crimson/os/seastore/segment_manager/ephemeral.h"
 #include "crimson/os/seastore/segment_manager.h"
 
 #include "test/crimson/seastore/test_block.h"
@@ -199,10 +200,9 @@ struct transaction_manager_test_t : public seastar_test_suite_t {
 
   void replay() {
     tm->close().unsafe_get();
-    auto next = segment_cleaner->get_next();
     destroy();
+    static_cast<segment_manager::EphemeralSegmentManager*>(&*segment_manager)->remount();
     init();
-    segment_cleaner->set_next(next);
     tm->mount().unsafe_get();
   }