From 98d901ff4fd1fe2ad68437ac126fe81e7cbc5356 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Sun, 31 May 2026 17:34:51 +0800 Subject: [PATCH] temp --- src/crimson/os/seastore/lba/btree_lba_manager.cc | 4 ++-- src/crimson/os/seastore/transaction_manager.cc | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.cc b/src/crimson/os/seastore/lba/btree_lba_manager.cc index 558d1f4d693..18d9039d5be 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -334,13 +334,13 @@ BtreeLBAManager::demote_extent( { assert(mapping.is_viewable()); assert(!mapping.is_end()); - assert(!mapping.is_indirect()); + assert(mapping.is_complete()); assert(mapping.has_shadow_val()); auto c = get_context(t); auto btree = co_await get_btree(c); auto ret = co_await _update_mapping( t, - mapping.get_effective_cursor(), + *mapping.direct_cursor, [&extent](lba_map_val_t val) { assert(val.pladdr.is_paddr()); assert(val.shadow_paddr == extent.get_paddr()); diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 7018721269d..69867b10b1c 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -549,7 +549,7 @@ TransactionManager::relocate_shadow_extent( assert(t.get_src() == transaction_type_t::DEMOTE); auto v = mapping.get_logical_extent(t); LogicalChildNodeRef extent; - auto laddr = mapping.get_key(); + auto laddr = mapping.get_intermediate_base(); if (!v.has_child()) { auto &child_pos = v.get_child_pos(); extent = cache->retire_absent_extent_addr_by_type( @@ -1449,6 +1449,9 @@ TransactionManager::demote_region( ret.complete = true; break; } + if (it.is_indirect()) { + it = co_await complete_mapping(t, std::move(it)); + } if (it.has_shadow_val()) { INFOT("demote shadow {}", t, it); auto extent = co_await relocate_shadow_extent(t, it); -- 2.47.3