From 4f50887c1f72ec62aca1309c64c61370913b8e89 Mon Sep 17 00:00:00 2001 From: Ronen Friedman Date: Sat, 22 Nov 2025 08:55:58 -0600 Subject: [PATCH] osd: provide fmtlib formatter for ScrubMapBuilder Signed-off-by: Ronen Friedman --- src/osd/osd_types.cc | 20 ++++++++++++++++++++ src/osd/osd_types.h | 23 +++-------------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index d3b39355d87..91adfdd40f6 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -7389,6 +7389,26 @@ auto ScrubMap::object::generate_test_instances() -> list return o; } +// -- ScrubMapBuilder -- + +ostream& operator<<(ostream& out, const ScrubMapBuilder& bldr) +{ + return out << bldr.fmt_print(); +} + +std::string ScrubMapBuilder::fmt_print() const +{ + const string elem = pos < ls.size() ? fmt::format(" {}", ls[pos]) : ""; + const string byte_pos = data_pos < 0 ? fmt::format(" byte {}", data_pos) : ""; + const string key = !omap_pos.empty() ? fmt::format(" key {}", omap_pos) : ""; + const string ret_s = ret ? fmt::format(" ret {}", ret) : ""; + + return fmt::format( + "({}/{}{} metadata_done {}{}{}{}{})", + pos, ls.size(), elem, static_cast(metadata_done), + byte_pos, key, (deep ? " deep" : ""), ret_s); +} + // -- OSDOp -- ostream& operator<<(ostream& out, const OSDOp& op) diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 679aaa7042e..8cec83e02f0 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -6649,26 +6649,9 @@ struct ScrubMapBuilder { omap_bytes = 0; } - friend std::ostream& operator<<(std::ostream& out, const ScrubMapBuilder& pos) { - out << "(" << pos.pos << "/" << pos.ls.size(); - if (pos.pos < pos.ls.size()) { - out << " " << pos.ls[pos.pos]; - } - out << " metadata_done " << pos.metadata_done; - if (pos.data_pos < 0) { - out << " byte " << pos.data_pos; - } - if (!pos.omap_pos.empty()) { - out << " key " << pos.omap_pos; - } - if (pos.deep) { - out << " deep"; - } - if (pos.ret) { - out << " ret " << pos.ret; - } - return out << ")"; - } + std::string fmt_print() const; + + friend std::ostream& operator<<(std::ostream& out, const ScrubMapBuilder& pos); }; struct watch_item_t { -- 2.47.3