From: Yingxin Cheng Date: Wed, 30 Jun 2021 03:44:56 +0000 (+0800) Subject: crimson/os/seastore/cache: cleanup get_extent_if_cached() X-Git-Tag: v17.1.0~1508^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5cd2c7c15169e120f31b26d30906f759a53ac8a4;p=ceph.git crimson/os/seastore/cache: cleanup get_extent_if_cached() And remove the query_cache_for_extent(t). Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index bbac701e0347..6c55c9b91330 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -231,18 +231,26 @@ public: get_extent_if_cached_ret get_extent_if_cached( Transaction &t, paddr_t offset) { - return seastar::do_with( - CachedExtentRef(), - [this, &t, offset](auto &ret) { - auto status = query_cache_for_extent(t, offset, &ret); - auto wait = seastar::now(); - if (status == Transaction::get_extent_ret::PRESENT) { - wait = ret->wait_io(); - } - return trans_intr::make_interruptible( - wait.then([ret] { return std::move(ret); }) - ); - }); + CachedExtentRef ret; + auto result = t.get_extent(offset, &ret); + if (result != Transaction::get_extent_ret::ABSENT) { + // including get_extent_ret::RETIRED + return get_extent_if_cached_iertr::make_ready_future< + CachedExtentRef>(ret); + } + + // get_extent_ret::PRESENT from transaction + result = query_cache_for_extent(offset, &ret); + if (result == Transaction::get_extent_ret::ABSENT) { + return get_extent_if_cached_iertr::make_ready_future< + CachedExtentRef>(); + } + + // get_extent_ret::PRESENT from cache + return ret->wait_io().then([ret] { + return get_extent_if_cached_iertr::make_ready_future< + CachedExtentRef>(ret); + }); } /** @@ -588,18 +596,6 @@ private: } } - Transaction::get_extent_ret query_cache_for_extent( - Transaction &t, - paddr_t offset, - CachedExtentRef *out) { - auto result = t.get_extent(offset, out); - if (result != Transaction::get_extent_ret::ABSENT) { - return result; - } else { - return query_cache_for_extent(offset, out); - } - } - }; using CacheRef = std::unique_ptr;