Skip to content

Commit

Permalink
crimson/os/seastore/lba_manager: make complete_transaction void
Browse files Browse the repository at this point in the history
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 <[email protected]>
athanatos committed Jun 23, 2021
1 parent 2f28daf commit 2507e78
Showing 5 changed files with 16 additions and 22 deletions.
4 changes: 1 addition & 3 deletions src/crimson/os/seastore/lba_manager.h
Original file line number Diff line number Diff line change
@@ -136,9 +136,7 @@ class LBAManager {
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;

/**
Original file line number Diff line number Diff line change
@@ -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(
Original file line number Diff line number Diff line change
@@ -89,7 +89,7 @@ class BtreeLBAManager : public LBAManager {
return update_refcount(t, addr, 1);
}

complete_transaction_ret complete_transaction(
void complete_transaction(
Transaction &t) final;

init_cached_extent_ret init_cached_extent(
26 changes: 12 additions & 14 deletions src/crimson/os/seastore/transaction_manager.cc
Original file line number Diff line number Diff line change
@@ -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(
2 changes: 1 addition & 1 deletion src/test/crimson/seastore/test_btree_lba_manager.cc
Original file line number Diff line number Diff line change
@@ -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{});
}

0 comments on commit 2507e78

Please sign in to comment.