]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/cache: avoid unnecessary transaction extent sets
authorXuehan Xu <xuxuehan@qianxin.com>
Sun, 3 Aug 2025 09:28:13 +0000 (17:28 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Tue, 12 Aug 2025 05:43:25 +0000 (13:43 +0800)
queires

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

index 0ffa689759afad34c2bb4dc500d1d9cc57884964..d3581498968eb5068f309a809c2a4001da050fea 100644 (file)
@@ -2221,28 +2221,18 @@ Cache::get_next_dirty_extents_ret Cache::get_next_dirty_extents(
              return;
            }
 
-           CachedExtentRef on_transaction;
-           auto result = t.get_extent(ext->get_paddr(), &on_transaction);
-           if (result == Transaction::get_extent_ret::ABSENT) {
-             DEBUGT("extent is absent on t -- {}", t, *ext);
-             t.add_to_read_set(ext);
-             if (is_root_type(ext->get_type())) {
-               if (t.root) {
-                 assert(&*t.root == &*ext);
-                 ceph_assert(0 == "t.root would have to already be in the read set");
-               } else {
-                 assert(&*ext == &*root);
-                 t.root = root;
-               }
+           DEBUGT("adding dirty extent {}", t, *ext);
+           t.add_to_read_set(ext);
+           if (is_root_type(ext->get_type())) {
+             if (t.root) {
+               assert(&*t.root == &*ext);
+               ceph_assert(0 == "t.root would have to already be in the read set");
+             } else {
+               assert(&*ext == &*root);
+               t.root = root;
              }
-             ret.push_back(ext);
-           } else if (result == Transaction::get_extent_ret::PRESENT) {
-             DEBUGT("extent is present on t -- {}, on t {}", t, *ext, *on_transaction);
-             ret.push_back(on_transaction);
-           } else {
-             assert(result == Transaction::get_extent_ret::RETIRED);
-             DEBUGT("extent is retired on t -- {}", t, *ext);
            }
+           ret.push_back(ext);
          });
        }).then_interruptible([&ret] {
          return std::move(ret);
index bf712d3eccccd07bc1526f6ad627a45187774a97..0aa7c9620ea295f8ba5cd5583c0742370a339a33 100644 (file)
@@ -1462,15 +1462,10 @@ public:
        return extent;
       }
     } else {
-      auto result = t.get_extent(extent->get_paddr(), &extent);
-      if (result == Transaction::get_extent_ret::RETIRED) {
-       return CachedExtentRef();
-      } else {
-       if (result == Transaction::get_extent_ret::ABSENT) {
-         t.add_to_read_set(extent);
-       }
-       return extent;
+      if (extent->is_stable()) {
+       std::ignore = t.maybe_add_to_read_set(extent);
       }
+      return extent->maybe_get_transactional_view(t);
     }
   }