]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/lba_manager: make complete_transaction void
authorSamuel Just <sjust@redhat.com>
Sat, 19 Jun 2021 09:05:44 +0000 (02:05 -0700)
committerSamuel Just <sjust@redhat.com>
Wed, 23 Jun 2021 18:23:34 +0000 (18:23 +0000)
This really can't result in mutations (the transaction already committed!)
and presently doesn't require any IO at all.  Just make it void.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/lba_manager.h
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h
src/crimson/os/seastore/transaction_manager.cc
src/test/crimson/seastore/test_btree_lba_manager.cc

index 22a548ede73c9cbcfb500b3bf4f31a53eeef113d..d1e5b5eb15b262c699c804604749abdfd8763b0d 100644 (file)
@@ -136,9 +136,7 @@ public:
     Transaction &t,
     laddr_t addr) = 0;
 
-  using complete_transaction_ertr = base_ertr;
-  using complete_transaction_ret = complete_transaction_ertr::future<>;
-  virtual complete_transaction_ret complete_transaction(
+  virtual void complete_transaction(
     Transaction &t) = 0;
 
   /**
index c328f1ab36019b756698517221b3f38362c8b918..164885e0f5b2b12c32e0ba68345ca8064f648533 100644 (file)
@@ -234,8 +234,7 @@ static depth_t get_depth(const CachedExtent &e)
   }
 }
 
-BtreeLBAManager::complete_transaction_ret
-BtreeLBAManager::complete_transaction(
+void BtreeLBAManager::complete_transaction(
   Transaction &t)
 {
   std::vector<CachedExtentRef> to_clear;
@@ -276,7 +275,6 @@ BtreeLBAManager::complete_transaction(
     logger().debug("{}: checking {}, {}", __func__, *e, pin);
     pin_set.check_parent(pin);
   }
-  return complete_transaction_ertr::now();
 }
 
 BtreeLBAManager::init_cached_extent_ret BtreeLBAManager::init_cached_extent(
index d2c21ed2cc034c9a7255554b76197799907be9a5..b7864ed4920c1599cd79ba59cf030ba9d11c2302 100644 (file)
@@ -89,7 +89,7 @@ public:
     return update_refcount(t, addr, 1);
   }
 
-  complete_transaction_ret complete_transaction(
+  void complete_transaction(
     Transaction &t) final;
 
   init_cached_extent_ret init_cached_extent(
index 46038e3b7825dedb9866f66fd815859d6e952198..105d3f040928f4799a09a1595240268f6dd1d8be 100644 (file)
@@ -247,20 +247,18 @@ TransactionManager::submit_transaction_direct(
       DEBUGT("journal commit to {} seq {}", tref, addr, journal_seq);
       segment_cleaner->set_journal_head(journal_seq);
       cache->complete_commit(tref, addr, journal_seq, segment_cleaner.get());
-      return lba_manager->complete_transaction(tref).safe_then(
-       [&tref, journal_seq=journal_seq, this] {
-       segment_cleaner->update_journal_tail_target(
-         cache->get_oldest_dirty_from().value_or(journal_seq));
-       auto to_release = tref.get_segment_to_release();
-       if (to_release != NULL_SEG_ID) {
-         return segment_manager.release(to_release
-         ).safe_then([this, to_release] {
-           segment_cleaner->mark_segment_released(to_release);
-         });
-       } else {
-         return SegmentManager::release_ertr::now();
-       }
-      });
+      lba_manager->complete_transaction(tref);
+      segment_cleaner->update_journal_tail_target(
+       cache->get_oldest_dirty_from().value_or(journal_seq));
+      auto to_release = tref.get_segment_to_release();
+      if (to_release != NULL_SEG_ID) {
+       return segment_manager.release(to_release
+       ).safe_then([this, to_release] {
+         segment_cleaner->mark_segment_released(to_release);
+       });
+      } else {
+       return SegmentManager::release_ertr::now();
+      }
     }).safe_then([&tref] {
       return tref.handle.complete();
     }).handle_error(
index c8d11da01b82511b27618248a80546c63a87b851..1f8e90bbb96f3f59938d2587f68bad87afe02b6d 100644 (file)
@@ -67,7 +67,7 @@ struct btree_lba_manager_test :
       [this, t=std::move(t)](auto p) mutable {
        auto [addr, seq] = p;
        cache.complete_commit(*t, addr, seq);
-       return lba_manager->complete_transaction(*t);
+       lba_manager->complete_transaction(*t);
       }).handle_error(crimson::ct_error::assert_all{});
   }