From: myoungwon oh Date: Tue, 14 Feb 2023 09:22:24 +0000 (+0900) Subject: crimson/os/seastore: In rewrite_extent, do not resolve addr if address is RANDOM_BLOCK X-Git-Tag: v18.1.0~322^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=cfef56a69b690e7687b4320fb782b64a15f0cbb2;p=ceph.git crimson/os/seastore: In rewrite_extent, do not resolve addr if address is RANDOM_BLOCK Signed-off-by: Myoungwon Oh Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/btree/fixed_kv_btree.h b/src/crimson/os/seastore/btree/fixed_kv_btree.h index e851720b1248f..779b2ad06b9c8 100644 --- a/src/crimson/os/seastore/btree/fixed_kv_btree.h +++ b/src/crimson/os/seastore/btree/fixed_kv_btree.h @@ -806,10 +806,7 @@ public: op_context_t c, CachedExtentRef e) { LOG_PREFIX(FixedKVBtree::rewrite_extent); - assert(e->get_type() == extent_types_t::LADDR_INTERNAL || - e->get_type() == extent_types_t::LADDR_LEAF || - e->get_type() == extent_types_t::BACKREF_INTERNAL || - e->get_type() == extent_types_t::BACKREF_LEAF); + assert(is_lba_backref_node(e->get_type())); auto do_rewrite = [&](auto &fixed_kv_extent) { auto n_fixed_kv_extent = c.cache.template alloc_new_extent< @@ -836,9 +833,13 @@ public: * Upon commit, these now block relative addresses will be interpretted * against the real final address. */ - n_fixed_kv_extent->resolve_relative_addrs( - make_record_relative_paddr(0).block_relative_to( - n_fixed_kv_extent->get_paddr())); + if (!n_fixed_kv_extent->get_paddr().is_absolute()) { + // backend_type_t::SEGMENTED + assert(n_fixed_kv_extent->get_paddr().is_record_relative()); + n_fixed_kv_extent->resolve_relative_addrs( + make_record_relative_paddr(0).block_relative_to( + n_fixed_kv_extent->get_paddr())); + } // else: backend_type_t::RANDOM_BLOCK SUBTRACET( seastore_fixedkv_tree,