]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/transaction: make Transaction::is_retired() an
authorXuehan Xu <xuxuehan@qianxin.com>
Tue, 25 Jun 2024 08:46:57 +0000 (16:46 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Wed, 26 Jun 2024 02:51:14 +0000 (10:51 +0800)
accurate extent check

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/os/seastore/transaction.h

index 5e3f165560e58a4c4134a7501caee3975395d26a..849c025009ccd76d09c8299148b34d0abe839389 100644 (file)
@@ -317,19 +317,14 @@ public:
   }
 
   bool is_retired(paddr_t paddr, extent_len_t len) {
-    if (retired_set.empty()) {
-      return false;
-    }
     auto iter = retired_set.lower_bound(paddr);
     if (iter == retired_set.end() ||
-       (*iter)->get_paddr() > paddr) {
-      assert(iter != retired_set.begin());
-      --iter;
+       (*iter)->get_paddr() != paddr) {
+      return false;
+    } else {
+      assert(len == (*iter)->get_length());
+      return true;
     }
-    auto retired_paddr = (*iter)->get_paddr();
-    auto retired_length = (*iter)->get_length();
-    return retired_paddr <= paddr &&
-      retired_paddr.add_offset(retired_length) >= paddr.add_offset(len);
   }
 
   template <typename F>