From f1db2cbc2082b8e6c5cfb974712ee13a9d6c8baf Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Wed, 18 Dec 2024 16:47:54 +0800 Subject: [PATCH] crimson/os/seastore/seastore_types: use is_backref_mapped_type() Signed-off-by: Yingxin Cheng --- src/crimson/os/seastore/cache.cc | 12 ++++++------ src/crimson/os/seastore/cached_extent.cc | 6 ------ src/crimson/os/seastore/cached_extent.h | 2 -- src/crimson/os/seastore/seastore_types.h | 17 +++++++++++++++++ 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index a4c6caf6b1b..1f29d208bd2 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -1355,8 +1355,8 @@ record_t Cache::prepare_record( retire_stat.increment(extent->get_length()); DEBUGT("retired and remove extent -- {}", t, *extent); commit_retire_extent(t, extent); - if (is_backref_mapped_extent_node(extent) || - is_retired_placeholder_type(extent->get_type())) { + if (is_backref_mapped_type(extent->get_type()) || + is_retired_placeholder_type(extent->get_type())) { rel_delta.alloc_blk_ranges.emplace_back( extent->get_paddr(), L_ADDR_NULL, @@ -1413,7 +1413,7 @@ record_t Cache::prepare_record( }, modify_time); if (i->is_valid() && - is_backref_mapped_extent_node(i)) { + is_backref_mapped_type(i->get_type())) { laddr_t alloc_laddr; if (i->is_logical()) { alloc_laddr = i->cast()->get_laddr(); @@ -1438,7 +1438,7 @@ record_t Cache::prepare_record( get_by_ext(efforts.fresh_ool_by_ext, i->get_type()).increment(i->get_length()); i->prepare_commit(); - if (is_backref_mapped_extent_node(i)) { + if (is_backref_mapped_type(i->get_type())) { laddr_t alloc_laddr; if (i->is_logical()) { alloc_laddr = i->cast()->get_laddr(); @@ -1696,7 +1696,7 @@ void Cache::complete_commit( const auto t_src = t.get_src(); touch_extent(*i, &t_src); epm.commit_space_used(i->get_paddr(), i->get_length()); - if (is_backref_mapped_extent_node(i)) { + if (is_backref_mapped_type(i->get_type())) { DEBUGT("backref_entry alloc {} len 0x{:x}", t, i->get_paddr(), @@ -1768,7 +1768,7 @@ void Cache::complete_commit( for (auto &i: t.retired_set) { auto &extent = i.extent; extent->dirty_from_or_retired_at = start_seq; - if (is_backref_mapped_extent_node(extent) || + if (is_backref_mapped_type(extent->get_type()) || is_retired_placeholder_type(extent->get_type())) { DEBUGT("backref_entry free {} len 0x{:x}", t, diff --git a/src/crimson/os/seastore/cached_extent.cc b/src/crimson/os/seastore/cached_extent.cc index 085a519cb68..ab2492f5bb6 100644 --- a/src/crimson/os/seastore/cached_extent.cc +++ b/src/crimson/os/seastore/cached_extent.cc @@ -38,12 +38,6 @@ void intrusive_ptr_release(CachedExtent *ptr) #endif -bool is_backref_mapped_extent_node(const CachedExtentRef &extent) { - return extent->is_logical() - || is_lba_node(extent->get_type()) - || extent->get_type() == extent_types_t::TEST_BLOCK_PHYSICAL; -} - std::ostream &operator<<(std::ostream &out, CachedExtent::extent_state_t state) { switch (state) { diff --git a/src/crimson/os/seastore/cached_extent.h b/src/crimson/os/seastore/cached_extent.h index 782afa19d33..f9356f40b83 100644 --- a/src/crimson/os/seastore/cached_extent.h +++ b/src/crimson/os/seastore/cached_extent.h @@ -1097,8 +1097,6 @@ protected: std::ostream &operator<<(std::ostream &, CachedExtent::extent_state_t); std::ostream &operator<<(std::ostream &, const CachedExtent&); -bool is_backref_mapped_extent_node(const CachedExtentRef &extent); - /// Compare extents by paddr struct paddr_cmp { bool operator()(paddr_t lhs, const CachedExtent &rhs) const { diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index 729dc6d85e7..98a37cdd33c 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -1468,6 +1468,23 @@ constexpr bool is_physical_type(extent_types_t type) { } } +constexpr bool is_backref_mapped_type(extent_types_t type) { + if ((type >= extent_types_t::LADDR_INTERNAL && + type <= extent_types_t::OBJECT_DATA_BLOCK) || + type == extent_types_t::TEST_BLOCK || + type == extent_types_t::TEST_BLOCK_PHYSICAL) { + assert(is_logical_type(type) || + is_lba_node(type) || + type == extent_types_t::TEST_BLOCK_PHYSICAL); + return true; + } else { + assert(!is_logical_type(type) && + !is_lba_node(type) && + type != extent_types_t::TEST_BLOCK_PHYSICAL); + return false; + } +} + constexpr bool is_real_type(extent_types_t type) { if (type <= extent_types_t::OBJECT_DATA_BLOCK || (type >= extent_types_t::TEST_BLOCK && -- 2.39.5