From: Samuel Just Date: Mon, 28 Jun 2021 21:23:45 +0000 (-0700) Subject: crimson/os/seastore/transaction: reorder members, make handle private X-Git-Tag: v17.1.0~1509^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a2b89dc01a03bed98227c8283fdb13c2154fedf7;p=ceph.git crimson/os/seastore/transaction: reorder members, make handle private Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/transaction.h b/src/crimson/os/seastore/transaction.h index c37dcccf0d14..b39a20419ce7 100644 --- a/src/crimson/os/seastore/transaction.h +++ b/src/crimson/os/seastore/transaction.h @@ -25,8 +25,6 @@ class Transaction; */ class Transaction { public: - OrderingHandle handle; - using Ref = std::unique_ptr; enum class get_extent_ret { PRESENT, @@ -121,6 +119,31 @@ public: return conflicted; } + auto &get_handle() { + return handle; + } + + Transaction( + OrderingHandle &&handle, + bool weak, + journal_seq_t initiated_after + ) : weak(weak), + retired_gate_token(initiated_after), + handle(std::move(handle)) + {} + + + ~Transaction() { + for (auto i = write_set.begin(); + i != write_set.end();) { + i->state = CachedExtent::extent_state_t::INVALID; + write_set.erase(*i++); + } + } + + friend class crimson::os::seastore::SeaStore; + friend class TransactionConflictCondition; + private: friend class Cache; friend Ref make_test_transaction(); @@ -152,24 +175,7 @@ private: bool conflicted = false; -public: - Transaction( - OrderingHandle &&handle, - bool weak, - journal_seq_t initiated_after - ) : handle(std::move(handle)), weak(weak), - retired_gate_token(initiated_after) {} - - ~Transaction() { - for (auto i = write_set.begin(); - i != write_set.end();) { - i->state = CachedExtent::extent_state_t::INVALID; - write_set.erase(*i++); - } - } - - friend class crimson::os::seastore::SeaStore; - friend class TransactionConflictCondition; + OrderingHandle handle; }; using TransactionRef = Transaction::Ref; diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 0b0216546a06..5cdb498bc9f3 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -224,7 +224,7 @@ TransactionManager::submit_transaction( LOG_PREFIX(TransactionManager::submit_transaction); DEBUGT("about to await throttle", t); return trans_intr::make_interruptible( - t.handle.enter(write_pipeline.wait_throttle) + t.get_handle().enter(write_pipeline.wait_throttle) ).then_interruptible([this] { return trans_intr::make_interruptible(segment_cleaner->await_hard_limits()); }).then_interruptible([this, &t]() { @@ -239,7 +239,7 @@ TransactionManager::submit_transaction_direct( LOG_PREFIX(TransactionManager::submit_transaction_direct); DEBUGT("about to prepare", tref); return trans_intr::make_interruptible( - tref.handle.enter(write_pipeline.prepare) + tref.get_handle().enter(write_pipeline.prepare) ).then_interruptible([this, FNAME, &tref]() mutable -> submit_transaction_iertr::future<> { auto record = cache->try_construct_record(tref); @@ -247,7 +247,7 @@ TransactionManager::submit_transaction_direct( DEBUGT("about to submit to journal", tref); - return journal->submit_record(std::move(*record), tref.handle + return journal->submit_record(std::move(*record), tref.get_handle() ).safe_then([this, FNAME, &tref](auto p) mutable { auto [addr, journal_seq] = p; DEBUGT("journal commit to {} seq {}", tref, addr, journal_seq); @@ -266,14 +266,14 @@ TransactionManager::submit_transaction_direct( return SegmentManager::release_ertr::now(); } }).safe_then([&tref] { - return tref.handle.complete(); + return tref.get_handle().complete(); }).handle_error( submit_transaction_iertr::pass_further{}, crimson::ct_error::all_same_way([](auto e) { ceph_assert(0 == "Hit error submitting to journal"); })); }).finally([&tref]() { - tref.handle.exit(); + tref.get_handle().exit(); }); } diff --git a/src/test/crimson/seastore/test_btree_lba_manager.cc b/src/test/crimson/seastore/test_btree_lba_manager.cc index aa449836a563..a4b6d1db339f 100644 --- a/src/test/crimson/seastore/test_btree_lba_manager.cc +++ b/src/test/crimson/seastore/test_btree_lba_manager.cc @@ -63,7 +63,7 @@ struct btree_lba_manager_test : ceph_assert(0 == "cannot fail"); } - return journal.submit_record(std::move(*record), t->handle).safe_then( + return journal.submit_record(std::move(*record), t->get_handle()).safe_then( [this, t=std::move(t)](auto p) mutable { auto [addr, seq] = p; cache.complete_commit(*t, addr, seq);