From fbe60f1097e1d4c4a7ba1e7b2d805fcd3a5a10e2 Mon Sep 17 00:00:00 2001 From: Zhang Song Date: Tue, 12 Aug 2025 12:15:34 +0800 Subject: [PATCH] crimson/os/seastore/2Q: don't add empty extents to the warm out queue Fixes: https://tracker.ceph.com/issues/72529 Signed-off-by: Zhang Song --- src/crimson/os/seastore/extent_pinboard.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/crimson/os/seastore/extent_pinboard.cc b/src/crimson/os/seastore/extent_pinboard.cc index 6c03eb5a19d6..a8e5ae0ce325 100644 --- a/src/crimson/os/seastore/extent_pinboard.cc +++ b/src/crimson/os/seastore/extent_pinboard.cc @@ -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(); 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. -- 2.47.3