Skip to content

Commit 5cc1b63

Browse files
committed
crimson/os/seastore/seastore_types: prefer paddr_t::is_absolute_*()
Signed-off-by: Yingxin Cheng <[email protected]>
1 parent 7e24f08 commit 5cc1b63

File tree

7 files changed

+28
-32
lines changed

7 files changed

+28
-32
lines changed

src/crimson/os/seastore/async_cleaner.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,7 +1521,7 @@ bool SegmentCleaner::check_usage()
15211521
extent_types_t type,
15221522
laddr_t laddr)
15231523
{
1524-
if (paddr.get_addr_type() == paddr_types_t::SEGMENT) {
1524+
if (paddr.is_absolute_segmented()) {
15251525
if (is_backref_node(type)) {
15261526
assert(laddr == L_ADDR_NULL);
15271527
assert(backref_key.is_absolute_segmented()
@@ -1557,7 +1557,7 @@ void SegmentCleaner::mark_space_used(
15571557
assert(background_callback->get_state() >= state_t::SCAN_SPACE);
15581558
assert(len);
15591559
// TODO: drop
1560-
if (addr.get_addr_type() != paddr_types_t::SEGMENT) {
1560+
if (!addr.is_absolute_segmented()) {
15611561
return;
15621562
}
15631563

@@ -1588,7 +1588,7 @@ void SegmentCleaner::mark_space_free(
15881588
assert(background_callback->get_state() >= state_t::SCAN_SPACE);
15891589
assert(len);
15901590
// TODO: drop
1591-
if (addr.get_addr_type() != paddr_types_t::SEGMENT) {
1591+
if (!addr.is_absolute_segmented()) {
15921592
return;
15931593
}
15941594

@@ -1722,7 +1722,7 @@ void RBMCleaner::mark_space_used(
17221722
extent_len_t len)
17231723
{
17241724
LOG_PREFIX(RBMCleaner::mark_space_used);
1725-
assert(addr.get_addr_type() == paddr_types_t::RANDOM_BLOCK);
1725+
assert(addr.is_absolute_random_block());
17261726
auto rbms = rb_group->get_rb_managers();
17271727
for (auto rbm : rbms) {
17281728
if (addr.get_device_id() == rbm->get_device_id()) {
@@ -1741,7 +1741,7 @@ void RBMCleaner::mark_space_free(
17411741
extent_len_t len)
17421742
{
17431743
LOG_PREFIX(RBMCleaner::mark_space_free);
1744-
assert(addr.get_addr_type() == paddr_types_t::RANDOM_BLOCK);
1744+
assert(addr.is_absolute_random_block());
17451745
auto rbms = rb_group->get_rb_managers();
17461746
for (auto rbm : rbms) {
17471747
if (addr.get_device_id() == rbm->get_device_id()) {

src/crimson/os/seastore/backref/btree_backref_manager.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ BtreeBackrefManager::new_mapping(
161161
{
162162
ceph_assert(
163163
is_aligned(
164-
key.get_addr_type() == paddr_types_t::SEGMENT ?
164+
key.is_absolute_segmented() ?
165165
key.as_seg_paddr().get_segment_off() :
166166
key.as_blk_paddr().get_device_off(),
167167
cache.get_block_size()));

src/crimson/os/seastore/cache.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,8 +1269,7 @@ record_t Cache::prepare_record(
12691269
assert(can_inplace_rewrite(i->prior_instance->get_type()));
12701270
assert(i->prior_instance->dirty_from_or_retired_at == JOURNAL_SEQ_MIN);
12711271
assert(i->prior_instance->state == CachedExtent::extent_state_t::CLEAN);
1272-
assert(i->prior_instance->get_paddr().get_addr_type() ==
1273-
paddr_types_t::RANDOM_BLOCK);
1272+
assert(i->prior_instance->get_paddr().is_absolute_random_block());
12741273
i->version = 1;
12751274
}
12761275

@@ -1310,7 +1309,7 @@ record_t Cache::prepare_record(
13101309
auto stype = segment_type_t::NULL_SEG;
13111310

13121311
// FIXME: This is specific to the segmented implementation
1313-
if (i->get_paddr().get_addr_type() == paddr_types_t::SEGMENT) {
1312+
if (i->get_paddr().is_absolute_segmented()) {
13141313
auto sid = i->get_paddr().as_seg_paddr().get_segment_id();
13151314
auto sinfo = get_segment_info(sid);
13161315
if (sinfo) {
@@ -2063,15 +2062,15 @@ Cache::replay_delta(
20632062
DEBUG("replay extent delta at {} {} ... -- {}, prv_extent={}",
20642063
journal_seq, record_base, delta, *extent);
20652064

2066-
if (delta.paddr.get_addr_type() == paddr_types_t::SEGMENT ||
2065+
if (delta.paddr.is_absolute_segmented() ||
20672066
!can_inplace_rewrite(delta.type)) {
20682067
ceph_assert_always(extent->last_committed_crc == delta.prev_crc);
20692068
assert(extent->version == delta.pversion);
20702069
extent->apply_delta_and_adjust_crc(record_base, delta.bl);
20712070
extent->set_modify_time(modify_time);
20722071
ceph_assert_always(extent->last_committed_crc == delta.final_crc);
20732072
} else {
2074-
assert(delta.paddr.get_addr_type() == paddr_types_t::RANDOM_BLOCK);
2073+
assert(delta.paddr.is_absolute_random_block());
20752074
// see prepare_record(), inplace rewrite might cause version mismatch
20762075
extent->apply_delta_and_adjust_crc(record_base, delta.bl);
20772076
extent->set_modify_time(modify_time);

src/crimson/os/seastore/record_scanner.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ class RecordScanner {
3030
); ///< @return used budget
3131

3232
device_off_t get_segment_off(paddr_t addr) const {
33-
if (addr.get_addr_type() == paddr_types_t::SEGMENT) {
33+
if (addr.is_absolute_segmented()) {
3434
auto& seg_addr = addr.as_seg_paddr();
3535
return seg_addr.get_segment_off();
3636
}
37-
assert(addr.get_addr_type() == paddr_types_t::RANDOM_BLOCK);
37+
assert(addr.is_absolute_random_block());
3838
auto& blk_addr = addr.as_blk_paddr();
3939
return blk_addr.get_device_off();
4040
}

src/crimson/os/seastore/seastore_types.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,12 @@ std::ostream &operator<<(std::ostream &out, const paddr_t &rhs)
127127
out << device_id_printer_t{id}
128128
<< ",0x"
129129
<< std::hex << s.get_device_off() << std::dec;
130-
} else if (rhs.get_addr_type() == paddr_types_t::SEGMENT) {
130+
} else if (rhs.is_absolute_segmented()) {
131131
auto &s = rhs.as_seg_paddr();
132132
out << s.get_segment_id()
133133
<< ",0x"
134134
<< std::hex << s.get_segment_off() << std::dec;
135-
} else if (rhs.get_addr_type() == paddr_types_t::RANDOM_BLOCK) {
135+
} else if (rhs.is_absolute_random_block()) {
136136
auto &s = rhs.as_blk_paddr();
137137
out << device_id_printer_t{s.get_device_id()}
138138
<< ",0x"

src/crimson/os/seastore/seastore_types.h

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -565,10 +565,6 @@ struct paddr_t {
565565
return static_cast<device_id_t>(internal_paddr >> DEVICE_OFF_BITS);
566566
}
567567

568-
paddr_types_t get_addr_type() const {
569-
return device_id_to_paddr_type(get_device_id());
570-
}
571-
572568
paddr_t add_offset(device_off_t o) const;
573569

574570
paddr_t add_relative(paddr_t o) const;
@@ -701,7 +697,7 @@ struct paddr_t {
701697
encode_device_off(offset)) {
702698
assert(offset >= DEVICE_OFF_MIN);
703699
assert(offset <= DEVICE_OFF_MAX);
704-
assert(get_addr_type() != paddr_types_t::SEGMENT);
700+
assert(!is_absolute_segmented());
705701
}
706702

707703
paddr_t(internal_paddr_t val);
@@ -711,6 +707,10 @@ struct paddr_t {
711707
: internal_paddr((static_cast<internal_paddr_t>(d_id) << DEVICE_OFF_BITS) |
712708
static_cast<u_device_off_t>(offset)) {}
713709

710+
paddr_types_t get_addr_type() const {
711+
return device_id_to_paddr_type(get_device_id());
712+
}
713+
714714
friend struct paddr_le_t;
715715
friend struct pladdr_le_t;
716716

@@ -827,22 +827,22 @@ inline paddr_t make_delayed_temp_paddr(device_off_t off) {
827827
}
828828

829829
inline const seg_paddr_t& paddr_t::as_seg_paddr() const {
830-
assert(get_addr_type() == paddr_types_t::SEGMENT);
830+
assert(is_absolute_segmented());
831831
return *static_cast<const seg_paddr_t*>(this);
832832
}
833833

834834
inline seg_paddr_t& paddr_t::as_seg_paddr() {
835-
assert(get_addr_type() == paddr_types_t::SEGMENT);
835+
assert(is_absolute_segmented());
836836
return *static_cast<seg_paddr_t*>(this);
837837
}
838838

839839
inline const blk_paddr_t& paddr_t::as_blk_paddr() const {
840-
assert(get_addr_type() == paddr_types_t::RANDOM_BLOCK);
840+
assert(is_absolute_random_block());
841841
return *static_cast<const blk_paddr_t*>(this);
842842
}
843843

844844
inline blk_paddr_t& paddr_t::as_blk_paddr() {
845-
assert(get_addr_type() == paddr_types_t::RANDOM_BLOCK);
845+
assert(is_absolute_random_block());
846846
return *static_cast<blk_paddr_t*>(this);
847847
}
848848

@@ -1009,18 +1009,15 @@ struct journal_seq_t {
10091009
}
10101010
using ret_t = std::pair<device_off_t, segment_id_t>;
10111011
auto to_pair = [](const paddr_t &addr) -> ret_t {
1012-
if (addr.get_addr_type() == paddr_types_t::SEGMENT) {
1012+
if (addr.is_absolute_segmented()) {
10131013
auto &seg_addr = addr.as_seg_paddr();
10141014
return ret_t(seg_addr.get_segment_off(), seg_addr.get_segment_id());
1015-
} else if (addr.get_addr_type() == paddr_types_t::RANDOM_BLOCK) {
1015+
} else if (addr.is_absolute_random_block()) {
10161016
auto &blk_addr = addr.as_blk_paddr();
10171017
return ret_t(blk_addr.get_device_off(), MAX_SEG_ID);
1018-
} else if (addr.get_addr_type() == paddr_types_t::RESERVED) {
1018+
} else {
10191019
auto &res_addr = addr.as_res_paddr();
10201020
return ret_t(res_addr.get_device_off(), MAX_SEG_ID);
1021-
} else {
1022-
assert(0 == "impossible");
1023-
return ret_t(0, MAX_SEG_ID);
10241021
}
10251022
};
10261023
auto left = to_pair(offset);

src/crimson/os/seastore/transaction_manager.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ TransactionManager::get_extents_if_live(
691691

692692
// This only works with segments to check if alive,
693693
// as parallel transactions may split the extent at the same time.
694-
ceph_assert(paddr.get_addr_type() == paddr_types_t::SEGMENT);
694+
ceph_assert(paddr.is_absolute_segmented());
695695

696696
return cache->get_extent_if_cached(t, paddr, len, type
697697
).si_then([this, FNAME, type, paddr, laddr, len, &t](auto extent)
@@ -727,7 +727,7 @@ TransactionManager::get_extents_if_live(
727727
{
728728
DEBUGT("got pin, try read in parallel ... -- {}", t, *pin);
729729
auto pin_paddr = pin->get_val();
730-
if (pin_paddr.get_addr_type() != paddr_types_t::SEGMENT) {
730+
if (!pin_paddr.is_absolute_segmented()) {
731731
return seastar::now();
732732
}
733733
auto &pin_seg_paddr = pin_paddr.as_seg_paddr();

0 commit comments

Comments
 (0)