From 5f2bd86f218b3d45047ab66f653be62fded76640 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 21 Aug 2020 14:53:36 -0700 Subject: [PATCH] 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 --- .../lba_manager/btree/lba_btree_node_impl.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 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 996cca9815b97..40ebcedd65d09 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( -- 2.39.5