From: Yingxin Cheng Date: Thu, 1 Jul 2021 06:03:02 +0000 (+0800) Subject: crimson/os/seastore/cache: cleanup, consolidate extent lookup through query_cache_for... X-Git-Tag: v17.1.0~1473^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a80877cae9037e99727716d1cb0ef10c2ed44abb;p=ceph.git crimson/os/seastore/cache: cleanup, consolidate extent lookup through query_cache_for_extent() Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index e1e557baf40b..980ac2309106 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -482,15 +482,15 @@ Cache::replay_delta( add_extent(root); return replay_delta_ertr::now(); } else { - auto get_extent_if_cached = [this](paddr_t addr) + auto _get_extent_if_cached = [this](paddr_t addr) -> get_extent_ertr::future { - auto retiter = extents.find_offset(addr); - if (retiter != extents.end()) { - CachedExtentRef ret = &*retiter; + CachedExtentRef ret; + auto result = query_cache_for_extent(addr, &ret); + if (result == Transaction::get_extent_ret::PRESENT) { return ret->wait_io().then([ret] { return ret; }); - } else { + } else { // get_extent_ret::ABSENT return seastar::make_ready_future(); } }; @@ -500,7 +500,7 @@ Cache::replay_delta( delta.paddr, delta.laddr, delta.length) : - get_extent_if_cached( + _get_extent_if_cached( delta.paddr) ).handle_error( replay_delta_ertr::pass_further{}, diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index 943975963d4b..34d7ce64b4c0 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -181,9 +181,10 @@ public: paddr_t offset, ///< [in] starting addr segment_off_t length ///< [in] length ) { - if (auto iter = extents.find_offset(offset); - iter != extents.end()) { - auto ret = TCachedExtentRef(static_cast(&*iter)); + CachedExtentRef _ret; + auto result = query_cache_for_extent(offset, &_ret); + if (result == Transaction::get_extent_ret::PRESENT) { + auto ret = TCachedExtentRef(static_cast(_ret.get())); return ret->wait_io( ).then([ret=std::move(ret)]() mutable -> get_extent_ret { // ret may be invalid, caller must check @@ -191,7 +192,7 @@ public: get_extent_ertr::ready_future_marker{}, std::move(ret)); }); - } else { + } else { // get_extent_ret::ABSENT auto ref = CachedExtent::make_cached_extent_ref( alloc_cache_buf(length)); ref->set_io_wait();