From e495e0e2c6266e72e06e409301b5c83e44d51248 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Sun, 11 May 2025 11:19:24 +0800 Subject: [PATCH] crimson/os/seastore/transaction_manager: Cache::retire_absent_extent_addr should be called immediately after TransactionManager::get_extent_if_linked if necessary Signed-off-by: Xuehan Xu --- src/crimson/os/seastore/transaction_manager.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index 6fca3bd2966f9..8e3fe2e9f0785 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -528,7 +528,7 @@ public: ceph_assert(!pin.is_clone()); fut = fut.si_then([this, &t, &pin]() mutable { return lba_manager->refresh_lba_mapping(t, std::move(pin)); - }).si_then([this, &t, &pin](auto newpin) { + }).si_then([this, &t, &pin, original_paddr, original_len](auto newpin) { pin = std::move(newpin); if (full_extent_integrity_check) { return read_pin(t, pin.duplicate() @@ -550,6 +550,7 @@ public: }); } else { // absent + cache->retire_absent_extent_addr(t, original_paddr, original_len); return base_iertr::make_ready_future>(); } } @@ -570,8 +571,6 @@ public: if (ext) { assert(ext->is_seen_by_users()); cache->retire_extent(t, ext); - } else { - cache->retire_absent_extent_addr(t, original_paddr, original_len); } for (auto &remap : remaps) { auto remap_offset = remap.offset; -- 2.39.5