]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore/2Q: don't add empty extents to the warm out queue
authorZhang Song <zhangsong02@qianxin.com>
Tue, 12 Aug 2025 04:15:34 +0000 (12:15 +0800)
committerZhang Song <zhangsong02@qianxin.com>
Tue, 12 Aug 2025 07:29:31 +0000 (15:29 +0800)
Fixes: https://tracker.ceph.com/issues/72529
Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
src/crimson/os/seastore/extent_pinboard.cc

index 6c03eb5a19d6fbbd1f58042e77186d00b1dd51f9..a8e5ae0ce325f2efe0bc92fd0a2c34217b93a118 100644 (file)
@@ -630,9 +630,15 @@ private:
     for (auto extent : extents) {
       ceph_assert(is_logical_type(extent->get_type()));
       extent->set_2q_state(extent_2q_state_t::Fresh);
+      auto len = extent->get_loaded_length();
+      if (len == 0) {
+        // The extent is possibly empty after being initially split/remapped
+        // by the ObjectDataHandler, we should only record non-empty extents
+        // to the warm out queue.
+        continue;
+      }
       auto lext = extent->cast<LogicalCachedExtent>();
       auto laddr = lext->get_laddr();
-      auto len = extent->get_loaded_length();
       auto end = extent->get_last_touch_end();
       // the extents evicted from warm_in queue will be recorded
       // in warm_out FIFO queue as recently accessed extents.