From: Yingxin Cheng Date: Wed, 23 Apr 2025 06:37:43 +0000 (+0800) Subject: crimson/os/seastore/seastore_types: introduce and use paddr_t::is_absolute_segmented... X-Git-Tag: v20.3.0~6^2~6 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=50cdbe3158c8c0659a335941f9681a3d93e02415;p=ceph.git crimson/os/seastore/seastore_types: introduce and use paddr_t::is_absolute_segmented/random_block() Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/async_cleaner.cc b/src/crimson/os/seastore/async_cleaner.cc index 64e6749562e53..60e2635c3cff9 100644 --- a/src/crimson/os/seastore/async_cleaner.cc +++ b/src/crimson/os/seastore/async_cleaner.cc @@ -1524,7 +1524,8 @@ bool SegmentCleaner::check_usage() if (paddr.get_addr_type() == paddr_types_t::SEGMENT) { if (is_backref_node(type)) { assert(laddr == L_ADDR_NULL); - assert(backref_key != P_ADDR_NULL); + assert(backref_key.is_absolute_segmented() + || backref_key == P_ADDR_MIN); tracker->allocate( paddr.as_seg_paddr().get_segment_id(), paddr.as_seg_paddr().get_segment_off(), @@ -1832,7 +1833,8 @@ bool RBMCleaner::check_usage() if (rbm->get_device_id() == paddr.get_device_id()) { if (is_backref_node(type)) { assert(laddr == L_ADDR_NULL); - assert(backref_key != P_ADDR_NULL); + assert(backref_key.is_absolute_random_block() + || backref_key == P_ADDR_MIN); tracker.allocate( paddr, len); diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 2011dd3b2df5f..3c224137f0dc7 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -1937,8 +1937,7 @@ Cache::replay_delta( * safetly skip these deltas because the extent must already * have been rewritten. */ - if (delta.paddr != P_ADDR_NULL && - delta.paddr.get_addr_type() == paddr_types_t::SEGMENT) { + if (delta.paddr.is_absolute_segmented()) { auto& seg_addr = delta.paddr.as_seg_paddr(); auto seg_info = get_segment_info(seg_addr.get_segment_id()); if (seg_info) { diff --git a/src/crimson/os/seastore/journal/segmented_journal.cc b/src/crimson/os/seastore/journal/segmented_journal.cc index 67c0b3fb8ac01..0bef08f8bd790 100644 --- a/src/crimson/os/seastore/journal/segmented_journal.cc +++ b/src/crimson/os/seastore/journal/segmented_journal.cc @@ -111,7 +111,7 @@ SegmentedJournal::prep_replay_segments( auto journal_tail = trimmer.get_journal_tail(); auto journal_tail_paddr = journal_tail.offset; ceph_assert(journal_tail != JOURNAL_SEQ_NULL); - ceph_assert(journal_tail_paddr != P_ADDR_NULL); + ceph_assert(journal_tail_paddr.is_absolute_segmented()); auto from = std::find_if( segments.begin(), segments.end(), diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index 33e08414e6b90..5871c2f51ea0c 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -651,6 +651,14 @@ public: return get_addr_type() != paddr_types_t::RESERVED; } + bool is_absolute_random_block() const { + return get_addr_type() == paddr_types_t::RANDOM_BLOCK; + } + + bool is_absolute_segmented() const { + return get_addr_type() == paddr_types_t::SEGMENT; + } + bool is_fake() const { return get_device_id() == DEVICE_ID_FAKE; } diff --git a/src/crimson/os/seastore/transaction.h b/src/crimson/os/seastore/transaction.h index 514a6fc58fba2..e217c54f79ddc 100644 --- a/src/crimson/os/seastore/transaction.h +++ b/src/crimson/os/seastore/transaction.h @@ -184,7 +184,7 @@ public: delayed_temp_offset += ref->get_length(); delayed_alloc_list.emplace_back(ref); fresh_block_stats.increment(ref->get_length()); - } else if (ref->get_paddr().is_absolute()) { + } else if (ref->get_paddr().is_absolute_random_block()) { pre_alloc_list.emplace_back(ref); fresh_block_stats.increment(ref->get_length()); } else { @@ -237,7 +237,7 @@ public: } void mark_inplace_rewrite_extent_ool(LogicalCachedExtentRef ref) { - assert(ref->get_paddr().is_absolute()); + assert(ref->get_paddr().is_absolute_random_block()); assert(!ref->is_inline()); inplace_ool_block_list.push_back(ref); } @@ -245,7 +245,7 @@ public: void add_inplace_rewrite_extent(CachedExtentRef ref) { ceph_assert(!is_weak()); ceph_assert(ref); - ceph_assert(ref->get_paddr().is_absolute()); + ceph_assert(ref->get_paddr().is_absolute_random_block()); assert(ref->state == CachedExtent::extent_state_t::DIRTY); pre_inplace_rewrite_list.emplace_back(ref->cast()); }