]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: fix internal relative btree addrs 35970/head
authorSamuel Just <sjust@redhat.com>
Tue, 7 Jul 2020 22:44:42 +0000 (15:44 -0700)
committerSamuel Just <sjust@redhat.com>
Mon, 13 Jul 2020 17:48:34 +0000 (10:48 -0700)
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 <sjust@redhat.com>
src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.cc

index 8befb830ebb990d65f2253ff68a9ffc31df45238..8ae640e2cdc5723f3efda479495c6bc5573f08ef 100644 (file)
@@ -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);