From: Yingxin Cheng Date: Mon, 5 Jul 2021 13:59:10 +0000 (+0800) Subject: crimson/os/seastore/cache: cleanup query_cache_with_placeholders() X-Git-Tag: v17.1.0~1473^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=07b7e811e5da28578574cb28fa0dcc8b2f371a73;p=ceph.git crimson/os/seastore/cache: cleanup query_cache_with_placeholders() Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 12d2215a3983..3304759bfd42 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -43,8 +43,8 @@ Cache::retire_extent_ret Cache::retire_extent_addr( } // absent from transaction - result = query_cache_with_placeholders(addr, &ext); - if (result == Transaction::get_extent_ret::PRESENT) { + ext = query_cache(addr); + if (ext) { if (ext->get_type() != extent_types_t::RETIRED_PLACEHOLDER) { t.add_to_read_set(ext); return trans_intr::make_interruptible( @@ -55,7 +55,7 @@ Cache::retire_extent_ret Cache::retire_extent_addr( }); } // the retired-placeholder exists - } else { // result == get_extent_ret::ABSENT + } else { // add a new placeholder to Cache ext = CachedExtent::make_cached_extent_ref< RetiredExtentPlaceholder>(length); @@ -466,16 +466,15 @@ Cache::replay_delta( } else { auto _get_extent_if_cached = [this](paddr_t addr) -> get_extent_ertr::future { - CachedExtentRef ret; - auto result = query_cache_with_placeholders(addr, &ret); - if (result == Transaction::get_extent_ret::PRESENT) { + auto ret = query_cache(addr); + if (ret) { // no retired-placeholder should be exist yet because no transaction // has been created. assert(ret->get_type() != extent_types_t::RETIRED_PLACEHOLDER); return ret->wait_io().then([ret] { return ret; }); - } else { // get_extent_ret::ABSENT + } else { return seastar::make_ready_future(); } }; diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index 87605d59b910..d8470838b41a 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -181,9 +181,8 @@ public: paddr_t offset, ///< [in] starting addr segment_off_t length ///< [in] length ) { - CachedExtentRef cached; - auto result = query_cache_with_placeholders(offset, &cached); - if (result == Transaction::get_extent_ret::ABSENT) { + auto cached = query_cache(offset); + if (!cached) { auto ret = CachedExtent::make_cached_extent_ref( alloc_cache_buf(length)); ret->set_paddr(offset); @@ -240,15 +239,15 @@ public: } // get_extent_ret::ABSENT from transaction - result = query_cache_with_placeholders(offset, &ret); - if (result == Transaction::get_extent_ret::ABSENT || + ret = query_cache(offset); + if (!ret || // retired_placeholder is not really cached yet ret->get_type() == extent_types_t::RETIRED_PLACEHOLDER) { return get_extent_if_cached_iertr::make_ready_future< CachedExtentRef>(); } - // get_extent_ret::PRESENT from cache and is not placeholder + // present in cache and is not a retired_placeholder t.add_to_read_set(ret); return ret->wait_io().then([ret] { return get_extent_if_cached_iertr::make_ready_future< @@ -617,16 +616,13 @@ private: ); } - Transaction::get_extent_ret query_cache_with_placeholders( - paddr_t offset, - CachedExtentRef *out) { + // Extents in cache may contain placeholders + CachedExtentRef query_cache(paddr_t offset) { if (auto iter = extents.find_offset(offset); - iter != extents.end()) { - if (out) - *out = &*iter; - return Transaction::get_extent_ret::PRESENT; + iter != extents.end()) { + return CachedExtentRef(&*iter); } else { - return Transaction::get_extent_ret::ABSENT; + return CachedExtentRef(); } }