From: Xuehan Xu Date: Mon, 20 Dec 2021 06:37:52 +0000 (+0800) Subject: crimson/os/seastore/cache: add lba nodes' logical begin addresses to extent_info_t X-Git-Tag: v17.1.0~141^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dd5218077352f127fb04e4fa17143c15c757cd44;p=ceph.git crimson/os/seastore/cache: add lba nodes' logical begin addresses to extent_info_t LBAManager rely on lba nodes' logical start addresses to judge whether an lba extent is still live Fixes: https://tracker.ceph.com/issues/53612 Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 281386437562..a2781090edb5 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -996,7 +996,9 @@ record_t Cache::prepare_record(Transaction &t) i->get_type(), i->is_logical() ? i->cast()->get_laddr() - : L_ADDR_NULL, + : (is_lba_node(i->get_type()) + ? i->cast()->get_node_meta().begin + : L_ADDR_NULL), std::move(bl) }); } diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc index 11d23f8bfc0d..fd2b8c7d0178 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc @@ -185,12 +185,6 @@ BtreeLBAManager::alloc_extent( }); } -static bool is_lba_node(extent_types_t type) -{ - return type == extent_types_t::LADDR_INTERNAL || - type == extent_types_t::LADDR_LEAF; -} - static bool is_lba_node(const CachedExtent &e) { return is_lba_node(e.get_type()); diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index c3c803e425e8..b205b77089e8 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -779,6 +779,12 @@ constexpr bool is_logical_type(extent_types_t type) { } } +constexpr bool is_lba_node(extent_types_t type) +{ + return type == extent_types_t::LADDR_INTERNAL || + type == extent_types_t::LADDR_LEAF; +} + std::ostream &operator<<(std::ostream &out, extent_types_t t); /* description of a new physical extent */