From: Yingxin Cheng Date: Wed, 18 Dec 2024 08:47:54 +0000 (+0800) Subject: crimson/os/seastore/seastore_types: use is_backref_mapped_type() X-Git-Tag: v20.0.0~477^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f1db2cbc2082b8e6c5cfb974712ee13a9d6c8baf;p=ceph.git crimson/os/seastore/seastore_types: use is_backref_mapped_type() Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index a4c6caf6b1bd..1f29d208bd2d 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 085a519cb68b..ab2492f5bb67 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 782afa19d33a..f9356f40b830 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 729dc6d85e72..98a37cdd33ca 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 &&