From: Xuehan Xu Date: Wed, 11 Feb 2026 06:50:27 +0000 (+0800) Subject: crimson/os/seastore: ignore entries with relative paddrs when X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fd3fdef2c7f4660308eaeaa372deee7d666afd33;p=ceph-ci.git crimson/os/seastore: ignore entries with relative paddrs when merging lba/backref nodes for TRIM/CLEANER transactions Fixes: https://tracker.ceph.com/issues/74798 Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/os/seastore/btree/fixed_kv_node.h b/src/crimson/os/seastore/btree/fixed_kv_node.h index fdd67e49656..6c0346fed41 100644 --- a/src/crimson/os/seastore/btree/fixed_kv_node.h +++ b/src/crimson/os/seastore/btree/fixed_kv_node.h @@ -525,9 +525,8 @@ struct FixedKVInternalNode auto &pending_version = static_cast(*copy_dest); auto it = pending_version.begin(); while (it != pending_version.end() && iter != this->end()) { - if (auto child = pending_version.children[it->get_offset()]; - (is_valid_child_ptr(child) && - (pending_version.is_pending() || child->_is_pending_io()))) { + if (it->get_val().is_relative()) { + // skip the ones that the pending version is also modifying it++; continue; } diff --git a/src/crimson/os/seastore/lba/lba_btree_node.h b/src/crimson/os/seastore/lba/lba_btree_node.h index 7944b8f6cec..8140d2fc941 100644 --- a/src/crimson/os/seastore/lba/lba_btree_node.h +++ b/src/crimson/os/seastore/lba/lba_btree_node.h @@ -300,9 +300,9 @@ struct LBALeafNode iter++; continue; } - if (auto child = pending_version.children[it->get_offset()]; - is_valid_child_ptr(child) && - (pending_version.is_pending() || child->_is_pending_io())) { + if (it->get_val().pladdr.is_paddr() && + it->get_val().pladdr.get_paddr().is_relative()) { + // skip the ones that the pending version is also modifying it++; continue; } @@ -330,7 +330,7 @@ struct LBALeafNode #ifndef NDEBUG for (auto ©_dest : copy_dests.dests_by_key) { auto &pending_version = static_cast(*copy_dest); - ceph_assert(pending_version.is_pending()); + assert(pending_version.is_pending()); } #endif this->merge_content_to(t, copy_dests.dests_by_key);