]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/transaction_manager: use weak transaction when initialize cached...
authorYingxin Cheng <yingxin.cheng@intel.com>
Wed, 28 Oct 2020 07:45:20 +0000 (15:45 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Wed, 28 Oct 2020 07:45:20 +0000 (15:45 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/transaction_manager.cc

index 76517055fd3e14de8d10578e0d78c04eddacc8c3..d8b543d2dfde307836beefdd48cd0134eb3afc3d 100644 (file)
@@ -70,31 +70,25 @@ TransactionManager::mount_ertr::future<> TransactionManager::mount()
   }).safe_then([this](auto addr) {
     segment_cleaner.set_journal_head(addr);
     return seastar::do_with(
-      create_transaction(),
+      make_weak_transaction(),
       [this](auto &t) {
        return cache.init_cached_extents(*t, [this](auto &t, auto &e) {
          return lba_manager.init_cached_extent(t, e);
-       }).safe_then([this, &t]() mutable {
-         return submit_transaction(std::move(t));
-       });
-      });
-  }).safe_then([this] {
-    return seastar::do_with(
-      make_weak_transaction(),
-      [this](auto &t) {
-       assert(segment_cleaner.debug_check_space(
-                *segment_cleaner.get_empty_space_tracker()));
-       return lba_manager.scan_mapped_space(
-         *t,
-         [this](paddr_t addr, extent_len_t len) {
-           logger().debug("TransactionManager::mount: marking {}~{} used",
-                        addr,
-                        len);
-           segment_cleaner.mark_space_used(
-             addr,
-             len ,
-             /* init_scan = */ true);
-         });
+       }).safe_then([this, &t] {
+          assert(segment_cleaner.debug_check_space(
+                   *segment_cleaner.get_empty_space_tracker()));
+          return lba_manager.scan_mapped_space(
+            *t,
+            [this](paddr_t addr, extent_len_t len) {
+              logger().debug("TransactionManager::mount: marking {}~{} used",
+                           addr,
+                           len);
+              segment_cleaner.mark_space_used(
+                addr,
+                len ,
+                /* init_scan = */ true);
+            });
+        });
       });
   }).safe_then([this] {
     segment_cleaner.complete_init();