]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/cache: cleanup, consolidate extent lookup through query_cache_for...
authorYingxin Cheng <yingxin.cheng@intel.com>
Thu, 1 Jul 2021 06:03:02 +0000 (14:03 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Tue, 6 Jul 2021 02:18:14 +0000 (10:18 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/cache.h

index e1e557baf40bea8652779d7db14019d5e67d92cf..980ac2309106b46c87a793b213f4b308ceb3c71b 100644 (file)
@@ -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<CachedExtentRef> {
-      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<CachedExtentRef>();
       }
     };
@@ -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{},
index 943975963d4b522b11fe1f7e1e58fa2dc5c17148..34d7ce64b4c0a21201e3b8ea99fa6996ac50131a 100644 (file)
@@ -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<T>(static_cast<T*>(&*iter));
+    CachedExtentRef _ret;
+    auto result = query_cache_for_extent(offset, &_ret);
+    if (result == Transaction::get_extent_ret::PRESENT) {
+      auto ret = TCachedExtentRef<T>(static_cast<T*>(_ret.get()));
       return ret->wait_io(
       ).then([ret=std::move(ret)]() mutable -> get_extent_ret<T> {
        // 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<T>(
        alloc_cache_buf(length));
       ref->set_io_wait();