From bfb7bda27e19f6cfa7529bf78ad40e7dbdb70440 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Sat, 3 May 2025 14:59:40 +0800 Subject: [PATCH] crimson/os/seastore/linked_tree_node: rename `BaseChildNode::get_parent_node()` to `BaseChildNode::peek_parent_node()` Signed-off-by: Xuehan Xu --- src/crimson/os/seastore/btree/fixed_kv_btree.h | 12 ++++++------ src/crimson/os/seastore/lba/btree_lba_manager.cc | 2 +- src/crimson/os/seastore/linked_tree_node.h | 11 +++++++---- .../omap_manager/btree/omap_btree_node_impl.cc | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/crimson/os/seastore/btree/fixed_kv_btree.h b/src/crimson/os/seastore/btree/fixed_kv_btree.h index 8cf870bceee..106cf541ba9 100644 --- a/src/crimson/os/seastore/btree/fixed_kv_btree.h +++ b/src/crimson/os/seastore/btree/fixed_kv_btree.h @@ -496,12 +496,12 @@ public: assert(cnode->has_parent_tracker()); if (node->is_pending()) { auto &n = node->get_stable_for_key(i->get_key()); - assert(cnode->get_parent_node().get() == &n); + assert(cnode->peek_parent_node().get() == &n); auto pos = n.lower_bound(i->get_key()).get_offset(); assert(pos < n.get_size()); assert(n.children[pos] == cnode.get()); } else { - assert(cnode->get_parent_node().get() == node.get()); + assert(cnode->peek_parent_node().get() == node.get()); assert(node->children[i->get_offset()] == cnode.get()); } } else if (child_node->is_pending()) { @@ -511,12 +511,12 @@ public: assert(prior.is_parent_valid()); if (node->is_mutation_pending()) { auto &n = node->get_stable_for_key(i->get_key()); - assert(prior.get_parent_node().get() == &n); + assert(prior.peek_parent_node().get() == &n); auto pos = n.lower_bound(i->get_key()).get_offset(); assert(pos < n.get_size()); assert(n.children[pos] == &prior); } else { - assert(prior.get_parent_node().get() == node.get()); + assert(prior.peek_parent_node().get() == node.get()); assert(node->children[i->get_offset()] == &prior); } } else { @@ -567,9 +567,9 @@ public: } else { auto c = static_cast(child); assert(c->has_parent_tracker()); - assert(c->get_parent_node().get() == node.get() + assert(c->peek_parent_node().get() == node.get() || (node->is_pending() && c->is_stable() - && c->get_parent_node().get() == &node->get_stable_for_key( + && c->peek_parent_node().get() == &node->get_stable_for_key( i->get_key()))); } } else { diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.cc b/src/crimson/os/seastore/lba/btree_lba_manager.cc index f9e2b2f962a..8eace23652e 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -1091,7 +1091,7 @@ BtreeLBAManager::_update_mapping( } assert(!nextent || (nextent->has_parent_tracker() && - nextent->get_parent_node().get() == iter.get_leaf_node().get())); + nextent->peek_parent_node().get() == iter.get_leaf_node().get())); return update_mapping_ret_bare_t(iter.get_cursor(c)); }); } diff --git a/src/crimson/os/seastore/linked_tree_node.h b/src/crimson/os/seastore/linked_tree_node.h index 6a903df2571..eb5708483f7 100644 --- a/src/crimson/os/seastore/linked_tree_node.h +++ b/src/crimson/os/seastore/linked_tree_node.h @@ -196,7 +196,10 @@ public: bool is_parent_valid() const { return parent_tracker && parent_tracker->is_valid(); } - TCachedExtentRef get_parent_node() const { + // this method should only be used for asserts and logs, because + // the parent node might be stable writing and should "wait_io" + // before further access + TCachedExtentRef peek_parent_node() const { assert(parent_tracker); return parent_tracker->get_parent(); } @@ -999,7 +1002,7 @@ protected: assert(!down_cast().is_btree_root()); assert(this->has_parent_tracker()); auto off = get_parent_pos(); - auto parent = this->get_parent_node(); + auto parent = this->peek_parent_node(); assert(parent->children[off] == &down_cast()); parent->children[off] = nullptr; } @@ -1018,7 +1021,7 @@ private: this->parent_tracker = prior.BaseChildNode::parent_tracker; assert(this->has_parent_tracker()); auto off = get_parent_pos(); - auto parent = this->get_parent_node(); + auto parent = this->peek_parent_node(); assert(me.get_prior_instance().get() == dynamic_cast(parent->children[off])); parent->children[off] = &me; @@ -1026,7 +1029,7 @@ private: btreenode_pos_t get_parent_pos() const { auto &me = down_cast(); - auto parent = this->get_parent_node(); + auto parent = this->peek_parent_node(); assert(parent); //TODO: can this search be avoided? auto key = me.get_begin(); diff --git a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc index 9705d198cef..adc3eb1e411 100644 --- a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc +++ b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc @@ -596,7 +596,7 @@ std::ostream &OMapLeafNode::print_detail_l(std::ostream &out) const << ", end=" << get_end(); } if (this->child_node_t::is_parent_valid()) - return out << ", parent=" << (void*)this->child_node_t::get_parent_node().get(); + return out << ", parent=" << (void*)this->child_node_t::peek_parent_node().get(); else return out; } -- 2.39.5