From dd5218077352f127fb04e4fa17143c15c757cd44 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Mon, 20 Dec 2021 14:37:52 +0800 Subject: [PATCH] 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 --- src/crimson/os/seastore/cache.cc | 4 +++- .../os/seastore/lba_manager/btree/btree_lba_manager.cc | 6 ------ src/crimson/os/seastore/seastore_types.h | 6 ++++++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 2813864375629..a2781090edb5f 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 11d23f8bfc0d7..fd2b8c7d01784 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 c3c803e425e88..b205b77089e8e 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 */ -- 2.39.5