From 35172bad0b047849b2b22882714247a1209d8a84 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 7 Jul 2020 15:44:42 -0700 Subject: [PATCH] crimson/os/seastore: fix internal relative btree addrs Internal relative addrs must be block relative on disk and record relative in deltas. Use maybe_generate_relative as intended. Signed-off-by: Samuel Just --- .../lba_manager/btree/lba_btree_node_impl.cc | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) 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 8befb830ebb99..8ae640e2cdc57 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 @@ -200,8 +200,15 @@ LBAInternalNode::split_entry( ceph_assert(!at_max_capacity()); auto [left, right, pivot] = entry->make_split_children(c, t); - journal_update(iter, left->get_paddr(), maybe_get_delta_buffer()); - journal_insert(iter + 1, pivot, right->get_paddr(), maybe_get_delta_buffer()); + journal_update( + iter, + maybe_generate_relative(left->get_paddr()), + maybe_get_delta_buffer()); + journal_insert( + iter + 1, + pivot, + maybe_generate_relative(right->get_paddr()), + maybe_get_delta_buffer()); c.retire_extent(t, entry); @@ -251,7 +258,10 @@ LBAInternalNode::merge_entry( t, r); - journal_update(liter, replacement->get_paddr(), maybe_get_delta_buffer()); + journal_update( + liter, + maybe_generate_relative(replacement->get_paddr()), + maybe_get_delta_buffer()); journal_remove(riter, maybe_get_delta_buffer()); c.retire_extent(t, l); @@ -271,12 +281,12 @@ LBAInternalNode::merge_entry( journal_update( liter, - replacement_l->get_paddr(), + maybe_generate_relative(replacement_l->get_paddr()), maybe_get_delta_buffer()); journal_replace( riter, pivot, - replacement_r->get_paddr(), + maybe_generate_relative(replacement_r->get_paddr()), maybe_get_delta_buffer()); c.retire_extent(t, l); -- 2.39.5