]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/cache: cleanup query_cache_with_placeholders() 42174/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Mon, 5 Jul 2021 13:59:10 +0000 (21:59 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Tue, 6 Jul 2021 02:18:20 +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 12d2215a3983e5da11533ebcd6c62bfc77b6f6b2..3304759bfd420c7ceb41ea1181e835c9bd1edbfb 100644 (file)
@@ -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> {
-      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<CachedExtentRef>();
       }
     };
index 87605d59b91038295255facc102b2fc2e65ce55a..d8470838b41a551387720f683718037eeea1fdac 100644 (file)
@@ -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<T>(
         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();
     }
   }