From: Yingxin Cheng Date: Thu, 20 Mar 2025 09:03:27 +0000 (+0800) Subject: crimson/os/seastore/cache: make sure on_cache is called after extent initialization X-Git-Tag: testing/wip-vshankar-testing-20250325.080107-debug~4^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=fbe564bde006bb83a07450affc608ee6021b4d17;p=ceph-ci.git crimson/os/seastore/cache: make sure on_cache is called after extent initialization Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index 8dfaa04cbcd..5be4cb97a35 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -665,9 +665,10 @@ private: "{} {}~0x{:x} is absent, add extent and reading range 0x{:x}~0x{:x} ... -- {}", T::TYPE, offset, length, partial_off, partial_len, *ret); add_extent(ret); - // touch_extent() should be included in on_cache - on_cache(*ret); extent_init_func(*ret); + // touch_extent() should be included in on_cache, + // required by add_extent() + on_cache(*ret); return read_extent( std::move(ret), partial_off, partial_len, p_src); } @@ -685,7 +686,6 @@ private: "{} {}~0x{:x} is absent(placeholder), add extent and reading range 0x{:x}~0x{:x} ... -- {}", T::TYPE, offset, length, partial_off, partial_len, *ret); extents_index.replace(*ret, *cached); - on_cache(*ret); // replace placeholder in transactions while (!cached->read_transactions.empty()) { @@ -695,6 +695,7 @@ private: cached->state = CachedExtent::extent_state_t::INVALID; extent_init_func(*ret); + on_cache(*ret); return read_extent( std::move(ret), partial_off, partial_len, p_src); }