From 4b155f3ee5ab4fbd212e117d2cd40dd78d846d3a Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Wed, 28 Feb 2024 16:00:23 +0800 Subject: [PATCH] crimson/os/seastore/lba_manager: extents pass to LBALeafNode::update() must either has a null parent tracker or point to the current leaf node Signed-off-by: Xuehan Xu --- src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h b/src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h index 3b760ff06a24e..73aa77ab0a557 100644 --- a/src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h +++ b/src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h @@ -194,7 +194,11 @@ struct LBALeafNode iter.get_offset(), *nextent); // child-ptr may already be correct, see LBAManager::update_mappings() - this->update_child_ptr(iter, nextent); + if (!nextent->has_parent_tracker()) { + this->update_child_ptr(iter, nextent); + } + assert(nextent->has_parent_tracker() + && nextent->get_parent_node().get() == this); } if (val.pladdr.is_paddr()) { val.pladdr = maybe_generate_relative(val.pladdr.get_paddr()); -- 2.39.5