From: Ronen Friedman Date: Tue, 2 Sep 2025 17:52:53 +0000 (-0500) Subject: osd/scrub: reinstate one-warning-per-chunk behaviour X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F65338%2Fhead;p=ceph.git 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 --- diff --git a/src/osd/scrubber/scrub_backend.cc b/src/osd/scrubber/scrub_backend.cc index d500625ef269..35a9045cb821 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 685fa11a2c65..a0cb8fb5efe2 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}; };