From 7230aac40c59219c827d9540901a2ef437fa9c49 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 30 Oct 2020 14:18:27 -0700 Subject: [PATCH] crimson/os/seastore/.../lba_btree_node_impl: hold reference to *this during lookup 4f2f4f modified TransactionManager::mount() to use a weak_transaction while calling init_cached_extents. This is fine, but lookup() needs to hold a reference to *this until the child lookup completes in order to ensure residence in the lba pinning set. Signed-off-by: Samuel Just --- .../os/seastore/lba_manager/btree/lba_btree_node_impl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.cc b/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.cc index 47b974b5f40e..39e197175c73 100644 --- a/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.cc +++ b/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.cc @@ -46,7 +46,7 @@ LBAInternalNode::lookup_ret LBAInternalNode::lookup( iter->get_val(), get_paddr()).safe_then([c, addr, depth](auto child) { return child->lookup(c, addr, depth); - }); + }).finally([ref=LBANodeRef(this)] {}); } LBAInternalNode::lookup_range_ret LBAInternalNode::lookup_range( -- 2.47.3