From: Samuel Just Date: Tue, 7 Jul 2020 22:44:42 +0000 (-0700) Subject: crimson/os/seastore: fix internal relative btree addrs X-Git-Tag: v16.1.0~1744^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F35970%2Fhead;p=ceph.git 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 --- 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 8befb830ebb9..8ae640e2cdc5 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);