]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
fixup! crimson/os/seastore/cache: add "read_extents_maybe_partial" wip-seastore-aggregate-read
authorXuehan Xu <xuxuehan@qianxin.com>
Sat, 6 Dec 2025 11:21:44 +0000 (19:21 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Tue, 9 Dec 2025 02:34:59 +0000 (10:34 +0800)
src/crimson/os/seastore/cache.h

index d335c6e1ad56a3554858d308a1ac93ad78309893..5f35dc773b6223006b293b746e23252ae67c9e63 100644 (file)
@@ -2051,6 +2051,11 @@ private:
   {
     LOG_PREFIX(Cache::read_absent_extents_maybe_partial);
     auto extents = std::move(exts);
+#ifndef NDEBUG
+    for (auto &ext : extents) {
+      assert(!ext.extent->is_pending_io());
+    }
+#endif
     struct range_to_read_t {
       paddr_t addr = P_ADDR_NULL;
       load_range_t range;
@@ -2067,7 +2072,9 @@ private:
       assert(extent->state == CachedExtent::extent_state_t::EXIST_CLEAN ||
             extent->state == CachedExtent::extent_state_t::CLEAN);
       extents_read.emplace_back(extent);
-      extent->set_io_wait(extent->state);
+      if (!extent->is_pending_io()) {
+        extent->set_io_wait(extent->state);
+      }
       auto old_length = extent->get_loaded_length();
       load_ranges_t to_read = extent->load_ranges(ext.offset, ext.length);
       auto new_length = extent->get_loaded_length();
@@ -2141,7 +2148,9 @@ private:
        SUBDEBUGT(seastore_cache,
          "read extent done (invalidated) -- {}", t, *extent);
       }
-      extent->complete_io();
+      if (extent->is_pending_io()) {
+        extent->complete_io();
+      }
     }
   }