Skip to content

Commit 1dbdc3e

Browse files
zhscnMatan-B
authored andcommitted
crimson/os/seastore: simplify the processing of indirect LBAMapping
Signed-off-by: Zhang Song <[email protected]> (cherry picked from commit f2a804b)
1 parent 8e38895 commit 1dbdc3e

File tree

4 files changed

+13
-40
lines changed

4 files changed

+13
-40
lines changed

src/crimson/os/seastore/cached_extent.cc

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,6 @@ void CachedExtent::set_invalid(Transaction &t) {
104104
on_invalidated(t);
105105
}
106106

107-
void LogicalCachedExtent::maybe_set_intermediate_laddr(LBAMapping &mapping) {
108-
laddr = mapping.is_indirect()
109-
? mapping.get_intermediate_base()
110-
: mapping.get_key();
111-
}
112-
113107
std::pair<bool, CachedExtent::viewable_state_t>
114108
CachedExtent::is_viewable_by_trans(Transaction &t) {
115109
if (!is_valid()) {

src/crimson/os/seastore/cached_extent.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,8 +1415,6 @@ class LogicalCachedExtent : public CachedExtent {
14151415
laddr = nladdr;
14161416
}
14171417

1418-
void maybe_set_intermediate_laddr(LBAMapping &mapping);
1419-
14201418
void apply_delta_and_adjust_crc(
14211419
paddr_t base, const ceph::bufferlist &bl) final {
14221420
apply_delta(bl);

src/crimson/os/seastore/transaction_manager.h

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -972,10 +972,7 @@ class TransactionManager : public ExtentCallbackInterface {
972972
).si_then([pin=std::move(pin)](auto extent) {
973973
#ifndef NDEBUG
974974
auto lextent = extent->template cast<LogicalChildNode>();
975-
auto pin_laddr = pin.get_key();
976-
if (pin.is_indirect()) {
977-
pin_laddr = pin.get_intermediate_base();
978-
}
975+
auto pin_laddr = pin.get_intermediate_base();
979976
assert(lextent->get_laddr() == pin_laddr);
980977
#endif
981978
return extent->template cast<T>();
@@ -1045,9 +1042,7 @@ class TransactionManager : public ExtentCallbackInterface {
10451042
// must be user-oriented required by maybe_init
10461043
assert(is_user_transaction(t.get_src()));
10471044
using ret = pin_to_extent_ret<T>;
1048-
auto direct_length = pin.is_indirect() ?
1049-
pin.get_intermediate_length() :
1050-
pin.get_length();
1045+
auto direct_length = pin.get_intermediate_length();
10511046
if (full_extent_integrity_check) {
10521047
direct_partial_off = 0;
10531048
partial_len = direct_length;
@@ -1061,15 +1056,15 @@ class TransactionManager : public ExtentCallbackInterface {
10611056
direct_length,
10621057
direct_partial_off,
10631058
partial_len,
1064-
[pin=pin.duplicate(), maybe_init=std::move(maybe_init),
1059+
[laddr=pin.get_intermediate_base(),
1060+
maybe_init=std::move(maybe_init),
10651061
child_pos=std::move(child_pos)]
10661062
(T &extent) mutable {
10671063
assert(extent.is_logical());
10681064
assert(!extent.has_laddr());
10691065
assert(!extent.has_been_invalidated());
1070-
assert(pin.is_valid());
10711066
child_pos.link_child(&extent);
1072-
extent.maybe_set_intermediate_laddr(pin);
1067+
extent.set_laddr(laddr);
10731068
maybe_init(extent);
10741069
extent.set_seen_by_users();
10751070
}
@@ -1126,29 +1121,21 @@ class TransactionManager : public ExtentCallbackInterface {
11261121
t, pin, type);
11271122
assert(is_logical_type(type));
11281123
assert(is_background_transaction(t.get_src()));
1129-
laddr_t direct_key;
1130-
extent_len_t direct_length;
1131-
if (pin.is_indirect()) {
1132-
direct_key = pin.get_intermediate_base();
1133-
direct_length = pin.get_intermediate_length();
1134-
} else {
1135-
direct_key = pin.get_key();
1136-
direct_length = pin.get_length();
1137-
}
1124+
laddr_t direct_key = pin.get_intermediate_base();
1125+
extent_len_t direct_length = pin.get_intermediate_length();
11381126
return cache->get_absent_extent_by_type(
11391127
t,
11401128
type,
11411129
pin.get_val(),
11421130
direct_key,
11431131
direct_length,
1144-
[pin=pin.duplicate(), child_pos=std::move(child_pos)](CachedExtent &extent) mutable {
1132+
[direct_key, child_pos=std::move(child_pos)](CachedExtent &extent) mutable {
11451133
assert(extent.is_logical());
11461134
auto &lextent = static_cast<LogicalChildNode&>(extent);
11471135
assert(!lextent.has_laddr());
11481136
assert(!lextent.has_been_invalidated());
1149-
assert(pin.is_valid());
11501137
child_pos.link_child(&lextent);
1151-
lextent.maybe_set_intermediate_laddr(pref);
1138+
lextent.set_laddr(direct_key);
11521139
// No change to extent::seen_by_user because this path is only
11531140
// for background cleaning.
11541141
}

src/test/crimson/seastore/test_transaction_manager.cc

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -497,12 +497,8 @@ struct transaction_manager_test_t :
497497
TestBlockRef read_pin(
498498
test_transaction_t &t,
499499
LBAMapping pin) {
500-
auto addr = pin.is_indirect()
501-
? pin.get_intermediate_base()
502-
: pin.get_key();
503-
auto len = pin.is_indirect()
504-
? pin.get_intermediate_length()
505-
: pin.get_length();
500+
auto addr = pin.get_intermediate_base();
501+
auto len = pin.get_intermediate_length();
506502
ceph_assert(test_mappings.contains(addr, t.mapping_delta));
507503
ceph_assert(test_mappings.get(addr, t.mapping_delta).desc.len == len);
508504

@@ -585,7 +581,7 @@ struct transaction_manager_test_t :
585581
using ertr = with_trans_ertr<TransactionManager::base_iertr>;
586582
bool indirect = pin.is_indirect();
587583
auto addr = pin.get_key();
588-
auto im_addr = indirect ? pin.get_intermediate_base() : L_ADDR_NULL;
584+
auto im_addr = pin.get_intermediate_base();
589585
auto ext = with_trans_intr(*(t.t), [&](auto& trans) {
590586
return tm->read_pin<TestBlock>(trans, std::move(pin));
591587
}).safe_then([](auto ret) {
@@ -1108,9 +1104,7 @@ struct transaction_manager_test_t :
11081104
}
11091105
auto o_laddr = opin.get_key();
11101106
bool indirect_opin = opin.is_indirect();
1111-
auto data_laddr = indirect_opin
1112-
? opin.get_intermediate_base()
1113-
: o_laddr;
1107+
auto data_laddr = opin.get_intermediate_base();
11141108
auto pin = with_trans_intr(*(t.t), [&](auto& trans) {
11151109
return tm->remap_pin<TestBlock>(
11161110
trans, std::move(opin), std::array{

0 commit comments

Comments
 (0)