From bb75d351a9a0a9bf0132ccd962154472b5f6e3d2 Mon Sep 17 00:00:00 2001 From: Ronen Friedman Date: Fri, 4 Aug 2023 02:56:57 -0500 Subject: [PATCH] osd: formatter for pg_log_entry_t Signed-off-by: Ronen Friedman --- src/osd/osd_types.cc | 45 +++++++++++++++++++++++++---------------- src/osd/osd_types.h | 4 +++- src/osd/osd_types_fmt.h | 1 - 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 4aada4fa849..b30af53ecee 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -4805,11 +4805,15 @@ void ObjectCleanRegions::generate_test_instances(list& o) o.back()->mark_object_new(); } +std::string ObjectCleanRegions::fmt_print() const +{ + return fmt::format("clean_offsets: {}, clean_omap: {}, new_object: {}", + clean_offsets, clean_omap, new_object); +} + ostream& operator<<(ostream& out, const ObjectCleanRegions& ocr) { - return out << "clean_offsets: " << ocr.clean_offsets - << ", clean_omap: " << ocr.clean_omap - << ", new_object: " << ocr.new_object; + return out << ocr.fmt_print(); } // -- pg_log_entry_t -- @@ -5023,26 +5027,33 @@ void pg_log_entry_t::generate_test_instances(list& o) ostream& operator<<(ostream& out, const pg_log_entry_t& e) { - out << e.version << " (" << e.prior_version << ") " - << std::left << std::setw(8) << e.get_op_name() << ' ' - << e.soid << " by " << e.reqid << " " << e.mtime - << " " << e.return_code; - if (!e.op_returns.empty()) { - out << " " << e.op_returns; + return out << e.fmt_print(); +} + +std::string pg_log_entry_t::fmt_print() const +{ + std::string pos_op_returns{}; + if (!op_returns.empty()) { + pos_op_returns = fmt::format(" {}", op_returns); } - if (e.snaps.length()) { - vector snaps; - ceph::buffer::list c = e.snaps; + + std::string pos_snaps{}; + if (snaps.length()) { + std::vector decoded_snaps; + ceph::buffer::list c = snaps; auto p = c.cbegin(); try { - decode(snaps, p); + ::decode(decoded_snaps, p); } catch (...) { - snaps.clear(); + decoded_snaps.clear(); } - out << " snaps " << snaps; + pos_snaps = fmt::format(" snaps {}", decoded_snaps); } - out << " ObjectCleanRegions " << e.clean_regions; - return out; + + return fmt::format( + "{} ({}) {:<8} {} by {} {} {}{}{} ObjectCleanRegions {}", version, + prior_version, get_op_name(), soid, reqid, mtime, return_code, + pos_op_returns, pos_snaps, clean_regions); } // -- pg_log_dup_t -- diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index b1d1cdbffdd..a3417ff1d11 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -4075,6 +4075,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; + std::string fmt_print() const; static void generate_test_instances(std::list& o); }; WRITE_CLASS_ENCODER(ObjectCleanRegions) @@ -4298,7 +4299,7 @@ struct pg_log_entry_t { invalid_hash(false), invalid_pool(false) { snaps.reassign_to_mempool(mempool::mempool_osd_pglog); } - + bool is_clone() const { return op == CLONE; } bool is_modify() const { return op == MODIFY; } bool is_promote() const { return op == PROMOTE; } @@ -4357,6 +4358,7 @@ struct pg_log_entry_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; + std::string fmt_print() const; static void generate_test_instances(std::list& o); }; diff --git a/src/osd/osd_types_fmt.h b/src/osd/osd_types_fmt.h index 486b7456ac5..246626c9983 100644 --- a/src/osd/osd_types_fmt.h +++ b/src/osd/osd_types_fmt.h @@ -332,6 +332,5 @@ struct fmt::formatter { template <> struct fmt::formatter : fmt::ostream_formatter {}; template <> struct fmt::formatter : fmt::ostream_formatter {}; template <> struct fmt::formatter : fmt::ostream_formatter {}; -template <> struct fmt::formatter : fmt::ostream_formatter {}; template struct fmt::formatter> : fmt::ostream_formatter {}; #endif -- 2.39.5