From 6b85e4d453f829c69f6441007bc3a6893b6b3d99 Mon Sep 17 00:00:00 2001 From: Ronen Friedman Date: Tue, 2 Sep 2025 12:52:53 -0500 Subject: [PATCH] osd/scrub: reinstate one-warning-per-chunk behaviour Modify collect_omap_stats() to guarantee that only one 'large omap entry' warning message is logged per chunk, thus maintaining the existing behaviour. Unlike the existing behaviour - all 'large omap' entries are counted. Signed-off-by: Ronen Friedman --- src/osd/scrubber/scrub_backend.cc | 20 ++++++++++++-------- src/osd/scrubber/scrub_backend.h | 3 +++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/osd/scrubber/scrub_backend.cc b/src/osd/scrubber/scrub_backend.cc index d500625ef26..35a9045cb82 100644 --- a/src/osd/scrubber/scrub_backend.cc +++ b/src/osd/scrubber/scrub_backend.cc @@ -253,16 +253,20 @@ void ScrubBackend::collect_omap_stats( { m_omap_stats.omap_bytes += obj_in_smap.object_omap_bytes; m_omap_stats.omap_keys += obj_in_smap.object_omap_keys; + if (obj_in_smap.large_omap_object_found) { m_omap_stats.large_omap_objects++; - std::string erm = fmt::format( - "Large omap object found. Object: {} PG: {} ({}) Key count: {} Size " - "(bytes): {}\n", - ho, m_pg_id, m_pg_id, obj_in_smap.large_omap_object_key_count, - obj_in_smap.large_omap_object_value_size); - - clog.do_log(CLOG_WARN, erm); - dout(5) << __func__ << ": " << erm << dendl; + if (!this_chunk->m_large_omap_warning_issued) { + this_chunk->m_large_omap_warning_issued = true; + std::string erm = fmt::format( + "Large omap object found. Object: {} PG: {} Key count: {} Size " + "(bytes): {}\n", + ho, m_pg_id, obj_in_smap.large_omap_object_key_count, + obj_in_smap.large_omap_object_value_size); + + clog.do_log(CLOG_WARN, erm); + dout(5) << __func__ << ": " << erm << dendl; + } } } diff --git a/src/osd/scrubber/scrub_backend.h b/src/osd/scrubber/scrub_backend.h index 685fa11a2c6..a0cb8fb5efe 100644 --- a/src/osd/scrubber/scrub_backend.h +++ b/src/osd/scrubber/scrub_backend.h @@ -294,6 +294,9 @@ struct scrub_chunk_t { // EC-related: shard_id_map m_ec_digest_map; + + /// only one 'large OMAP' warning per chunk + bool m_large_omap_warning_issued{false}; }; -- 2.39.5