From: Samuel Just Date: Sat, 19 Jun 2021 09:05:44 +0000 (-0700) Subject: crimson/os/seastore/lba_manager: make complete_transaction void X-Git-Tag: v17.1.0~1567^2~28 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=2507e789dd1c74cf8a7f411a5cfa80bad9961bd8;p=ceph-ci.git crimson/os/seastore/lba_manager: make complete_transaction void 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 --- diff --git a/src/crimson/os/seastore/lba_manager.h b/src/crimson/os/seastore/lba_manager.h index 22a548ede73..d1e5b5eb15b 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -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; /** diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc index c328f1ab360..164885e0f5b 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc @@ -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 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( diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h index d2c21ed2cc0..b7864ed4920 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h @@ -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( diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 46038e3b782..105d3f04092 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -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( diff --git a/src/test/crimson/seastore/test_btree_lba_manager.cc b/src/test/crimson/seastore/test_btree_lba_manager.cc index c8d11da01b8..1f8e90bbb96 100644 --- a/src/test/crimson/seastore/test_btree_lba_manager.cc +++ b/src/test/crimson/seastore/test_btree_lba_manager.cc @@ -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{}); }