From: Yingxin Cheng Date: Wed, 2 Apr 2025 03:20:53 +0000 (+0800) Subject: crimson/os/seastore/lba_manager: expose direct_key in ref_update_result_t X-Git-Tag: v20.3.0~129^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a31460e53f18d5de750190bbce84308ef947c312;p=ceph.git crimson/os/seastore/lba_manager: expose direct_key in ref_update_result_t Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/lba_manager.h b/src/crimson/os/seastore/lba_manager.h index 331e8b56e152..49dae667a903 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -100,6 +100,7 @@ public: extent_len_t len) = 0; struct ref_update_result_t { + laddr_t direct_key; extent_ref_count_t refcount = 0; pladdr_t addr; extent_len_t length = 0; 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 74d85390a333..b88b3f526998 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 @@ -748,9 +748,10 @@ BtreeLBAManager::_decref_intermediate( std::move(iter), [&btree, addr, len, c](auto &iter) { ceph_assert(!iter.is_end()); - ceph_assert(iter.get_key() <= addr); + laddr_t key = iter.get_key(); + ceph_assert(key <= addr); auto val = iter.get_val(); - ceph_assert(iter.get_key() + val.len >= addr + len); + ceph_assert(key + val.len >= addr + len); ceph_assert(val.pladdr.is_paddr()); ceph_assert(val.refcount >= 1); val.refcount -= 1; @@ -758,13 +759,14 @@ BtreeLBAManager::_decref_intermediate( LOG_PREFIX(BtreeLBAManager::_decref_intermediate); TRACET("decreased refcount of intermediate key {} -- {}", c.trans, - iter.get_key(), + key, val); if (!val.refcount) { return btree.remove(c, iter - ).si_then([val] { + ).si_then([key, val] { auto res = ref_update_result_t{ + key, val.refcount, val.pladdr.get_paddr(), val.len @@ -817,7 +819,7 @@ BtreeLBAManager::update_refcount( map_value.len ); } - return fut.si_then([map_value, mapping=std::move(mapping)] + return fut.si_then([addr, map_value, mapping=std::move(mapping)] (auto decref_intermediate_res) mutable { if (map_value.pladdr.is_laddr() && decref_intermediate_res) { @@ -828,6 +830,7 @@ BtreeLBAManager::update_refcount( } else { return update_refcount_ret_bare_t{ ref_update_result_t{ + addr, map_value.refcount, map_value.pladdr, map_value.len