From: Samuel Just Date: Fri, 21 Aug 2020 21:53:36 +0000 (-0700) Subject: crimson/os/seastore/.../btree_lba_node_impl: mutate_mapping adjust addr for extent... X-Git-Tag: v16.1.0~983^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5f2bd86f218b3d45047ab66f653be62fded76640;p=ceph.git crimson/os/seastore/.../btree_lba_node_impl: mutate_mapping adjust addr for extent state Addresses must always be adjusted depending on whether the extent will be written as a block or as a delta. 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 996cca9815b9..40ebcedd65d0 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 @@ -409,7 +409,18 @@ LBALeafNode::mutate_mapping_ret LBALeafNode::mutate_mapping( return crimson::ct_error::enoent::make(); } - auto mutated = f(mutation_pt.get_val()); + auto cur = mutation_pt.get_val(); + auto mutated = f(cur); + + mutated.paddr = maybe_generate_relative(mutated.paddr); + + logger().debug( + "{}: mutate addr {}: {} -> {}", + __func__, + laddr, + cur.paddr, + mutated.paddr); + if (mutated.refcount > 0) { journal_update(mutation_pt, mutated, maybe_get_delta_buffer()); return mutate_mapping_ret(