From e3b91ff788af8584ccf4849ad4fdcf5bd12f40c4 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Sun, 3 Aug 2025 17:28:13 +0800 Subject: [PATCH] crimson/os/seastore/cache: avoid unnecessary transaction extent sets queires Signed-off-by: Xuehan Xu --- src/crimson/os/seastore/cache.cc | 30 ++++++++++-------------------- src/crimson/os/seastore/cache.h | 11 +++-------- 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 0ffa689759afa..d3581498968eb 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -2221,28 +2221,18 @@ Cache::get_next_dirty_extents_ret Cache::get_next_dirty_extents( return; } - CachedExtentRef on_transaction; - auto result = t.get_extent(ext->get_paddr(), &on_transaction); - if (result == Transaction::get_extent_ret::ABSENT) { - DEBUGT("extent is absent on t -- {}", t, *ext); - t.add_to_read_set(ext); - if (is_root_type(ext->get_type())) { - if (t.root) { - assert(&*t.root == &*ext); - ceph_assert(0 == "t.root would have to already be in the read set"); - } else { - assert(&*ext == &*root); - t.root = root; - } + DEBUGT("adding dirty extent {}", t, *ext); + t.add_to_read_set(ext); + if (is_root_type(ext->get_type())) { + if (t.root) { + assert(&*t.root == &*ext); + ceph_assert(0 == "t.root would have to already be in the read set"); + } else { + assert(&*ext == &*root); + t.root = root; } - ret.push_back(ext); - } else if (result == Transaction::get_extent_ret::PRESENT) { - DEBUGT("extent is present on t -- {}, on t {}", t, *ext, *on_transaction); - ret.push_back(on_transaction); - } else { - assert(result == Transaction::get_extent_ret::RETIRED); - DEBUGT("extent is retired on t -- {}", t, *ext); } + ret.push_back(ext); }); }).then_interruptible([&ret] { return std::move(ret); diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index bf712d3eccccd..0aa7c9620ea29 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -1462,15 +1462,10 @@ public: return extent; } } else { - auto result = t.get_extent(extent->get_paddr(), &extent); - if (result == Transaction::get_extent_ret::RETIRED) { - return CachedExtentRef(); - } else { - if (result == Transaction::get_extent_ret::ABSENT) { - t.add_to_read_set(extent); - } - return extent; + if (extent->is_stable()) { + std::ignore = t.maybe_add_to_read_set(extent); } + return extent->maybe_get_transactional_view(t); } } -- 2.39.5