-+#include <fmt/ostream.h>
-+#include <boost/intrusive_ptr.hpp>
-
- #include <string_view>
-
-@@ -26,3 +28,24 @@ struct fmt::formatter<std::map<A, B, Com
- return fmt::format_to(ctx.out(), "}}");
- }
- };
-+
-+template <class A, class B>
-+struct fmt::formatter<std::pair<A, B>> : ostream_formatter {};
-+
-+template <class A, class Alloc>
-+struct fmt::formatter<std::vector<A, Alloc>> : ostream_formatter {};
-+
-+template <typename T>
-+struct fmt::formatter<std::optional<T>> : ostream_formatter {};
-+
-+template <class A, class Comp, class Alloc>
-+struct fmt::formatter<std::set<A, Comp, Alloc>> : ostream_formatter {};
-+
-+template <uint8_t S>
-+struct fmt::formatter<sha_digest_t<S>> : ostream_formatter {};
-+
-+template <typename T>
-+struct fmt::formatter<boost::intrusive_ptr<T>> : ostream_formatter {};
-+
-+template <typename T>
-+struct fmt::formatter<ceph_le<T>> : ostream_formatter {};
---- ceph-17.2.3/src/common/Journald.cc.orig 2022-09-04 18:08:09.890385180 +0200
-+++ ceph-17.2.3/src/common/Journald.cc 2022-09-07 17:20:33.128007133 +0200
-@@ -21,6 +21,7 @@
- #include "common/LogEntry.h"
- #include "log/Entry.h"
- #include "log/SubsystemMap.h"
-+#include "msg/msg_fmt.h"
-
-
- namespace ceph::logging {
---- ceph-17.2.3/src/common/hobject_fmt.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/common/hobject_fmt.h 2022-09-07 18:23:08.743232468 +0200
-@@ -50,3 +50,9 @@ template <> struct fmt::formatter<hobjec
- ho.get_bitwise_key_u32(), v, ho.snap);
- }
- };
-+
-+template <>
-+struct fmt::formatter<ghobject_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<snapid_t> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/admin/admin_socket.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/admin/admin_socket.cc 2022-09-08 17:39:11.969465247 +0200
-@@ -19,6 +19,7 @@
- #include "messages/MCommandReply.h"
- #include "crimson/common/log.h"
- #include "crimson/net/Socket.h"
-+#include "include/types_fmt.h"
-
- using namespace crimson::common;
-
---- ceph-17.2.3/src/crimson/admin/osd_admin.cc.orig 2022-09-04 21:48:44.290691903 +0200
-+++ ceph-17.2.3/src/crimson/admin/osd_admin.cc 2022-09-08 21:32:52.391069817 +0200
-@@ -12,6 +12,7 @@
- #include <seastar/core/scollectd_api.hh>
-
- #include "common/config.h"
-+#include "common/hobject_fmt.h"
- #include "crimson/admin/admin_socket.h"
- #include "crimson/common/log.h"
- #include "crimson/osd/exceptions.h"
---- ceph-17.2.3/src/crimson/admin/pg_commands.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/admin/pg_commands.cc 2022-09-14 20:59:47.803920736 +0200
-@@ -13,6 +13,7 @@
- #include "crimson/admin/admin_socket.h"
- #include "crimson/osd/osd.h"
- #include "crimson/osd/pg.h"
-+#include "osd/osd_types_fmt.h"
-
-
- using crimson::osd::OSD;
---- ceph-17.2.3/src/crimson/common/gated.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/common/gated.h 2022-09-05 17:55:05.174809923 +0200
-@@ -28,11 +28,11 @@ class Gated {
- ).handle_exception([what, &who] (std::exception_ptr eptr) {
- if (*eptr.__cxa_exception_type() == typeid(system_shutdown_exception)) {
- gated_logger().debug(
-- "{}, {} skipped, system shutdown", who, what);
-+ "{}, {} skipped, system shutdown", fmt::streamed(who), what);
- return;
- }
- gated_logger().error(
-- "{} dispatch() {} caught exception: {}", who, what, eptr);
-+ "{} dispatch() {} caught exception: {}", fmt::streamed(who), what, eptr);
- assert(*eptr.__cxa_exception_type()
- == typeid(seastar::gate_closed_exception));
- });
---- ceph-17.2.3/src/crimson/common/logclient.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/common/logclient.cc 2022-09-08 16:51:12.587841466 +0200
-@@ -1,5 +1,6 @@
- #include "crimson/common/logclient.h"
- #include "include/str_map.h"
-+#include "include/types_fmt.h"
- #include "messages/MLog.h"
- #include "messages/MLogAck.h"
- #include "messages/MMonGetVersion.h"
-@@ -286,7 +287,7 @@ MessageURef LogClient::_get_mon_log_mess
- ceph_assert(log_iter != log_queue.end());
- out_log_queue.push_back(*log_iter);
- last_log_sent = log_iter->seq;
-- logger().debug(" will send {}", *log_iter);
-+ logger().debug(" will send {}", fmt::streamed(*log_iter));
- ++log_iter;
- }
-
-@@ -332,7 +333,7 @@ const EntityName& LogClient::get_myname(
-
- seastar::future<> LogClient::handle_log_ack(Ref<MLogAck> m)
- {
-- logger().debug("handle_log_ack {}", *m);
-+ logger().debug("handle_log_ack {}", fmt::streamed(*m));
-
- version_t last = m->last;
-
-@@ -341,7 +342,7 @@ seastar::future<> LogClient::handle_log_
- const LogEntry &entry(*q);
- if (entry.seq > last)
- break;
-- logger().debug(" logged {}", entry);
-+ logger().debug(" logged {}", fmt::streamed(entry));
- q = log_queue.erase(q);
- }
- return seastar::now();
---- ceph-17.2.3/src/crimson/mgr/client.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/mgr/client.cc 2022-09-05 06:26:48.430701643 +0200
-@@ -134,7 +134,7 @@ seastar::future<> Client::handle_mgr_map
- seastar::future<> Client::handle_mgr_conf(crimson::net::ConnectionRef,
- Ref<MMgrConfigure> m)
- {
-- logger().info("{} {}", __func__, *m);
-+ logger().info("{} {}", __func__, fmt::streamed(*m));
-
- auto report_period = std::chrono::seconds{m->stats_period};
- if (report_period.count()) {
---- ceph-17.2.3/src/crimson/mon/MonClient.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/mon/MonClient.cc 2022-09-08 19:41:15.770921116 +0200
-@@ -14,6 +14,8 @@
- #include "auth/RotatingKeyRing.h"
-
- #include "common/hostname.h"
-+#include "include/types_fmt.h"
-+#include "msg/msg_fmt.h"
-
- #include "crimson/auth/KeyRing.h"
- #include "crimson/common/config_proxy.h"
-@@ -217,7 +219,7 @@ Connection::do_auth_single(Connection::r
- break;
- case request_t::general:
- if (int ret = auth->build_request(m->auth_payload); ret) {
-- logger().error("missing/bad key for '{}'", local_conf()->name);
-+ logger().error("missing/bad key for '{}'", fmt::streamed(local_conf()->name));
- throw std::system_error(make_error_code(
- crimson::net::error::negotiation_failure));
- }
-@@ -225,7 +225,7 @@ Connection::do_auth_single(Connection::r
- default:
- assert(0);
- }
-- logger().info("sending {}", *m);
-+ logger().info("sending {}", fmt::streamed(*m));
- return conn->send(std::move(m)).then([this] {
- logger().info("waiting");
- return auth_reply.get_shared_future();
-@@ -237,8 +237,8 @@ Connection::do_auth_single(Connection::r
- }
- logger().info(
- "do_auth_single: mon {} => {} returns {}: {}",
-- conn->get_messenger()->get_myaddr(),
-- conn->get_peer_addr(), *m, m->result);
-+ conn->get_messenger()->get_myaddr(),
-+ conn->get_peer_addr(), fmt::streamed(*m), m->result);
- auto p = m->result_bl.cbegin();
- auto ret = auth->handle_response(m->result, p,
- nullptr, nullptr);
-@@ -807,8 +807,8 @@ seastar::future<> Client::handle_auth_re
- {
- logger().info(
- "handle_auth_reply mon {} => {} returns {}: {}",
-- conn->get_messenger()->get_myaddr(),
-- conn->get_peer_addr(), *m, m->result);
-+ conn->get_messenger()->get_myaddr(),
-+ conn->get_peer_addr(), fmt::streamed(*m), m->result);
- auto found = std::find_if(pending_conns.begin(), pending_conns.end(),
- [peer_addr = conn->get_peer_addr()](auto& mc) {
- return mc->is_my_peer(peer_addr);
---- ceph-17.2.3/src/crimson/net/Connection.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/net/Connection.h 2022-09-06 16:55:17.884653125 +0200
-@@ -173,3 +173,6 @@ inline std::ostream& operator<<(std::ost
- }
-
- } // namespace crimson::net
-+
-+template <>
-+struct fmt::formatter<crimson::net::Connection> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/net/SocketConnection.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/net/SocketConnection.h 2022-09-08 21:30:24.173383344 +0200
-@@ -104,3 +104,6 @@ class SocketConnection : public Connecti
- };
-
- } // namespace crimson::net
-+
-+template <>
-+struct fmt::formatter<crimson::net::SocketConnection> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/net/ProtocolV2.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/net/ProtocolV2.cc 2022-09-09 19:40:17.957323611 +0200
-@@ -7,6 +7,7 @@
- #include <fmt/format.h>
- #include "include/msgr.h"
- #include "include/random.h"
-+#include "msg/msg_fmt.h"
-
- #include "crimson/auth/AuthClient.h"
- #include "crimson/auth/AuthServer.h"
-@@ -604,7 +605,7 @@ seastar::future<> ProtocolV2::client_aut
- return handle_auth_reply();
- });
- } catch (const crimson::auth::error& e) {
-- logger().error("{} get_initial_auth_request returned {}", conn, e);
-+ logger().error("{} get_initial_auth_request returned {}", conn, fmt::streamed(e));
- abort_in_close(*this, true);
- return seastar::now();
- }
---- ceph-17.2.3/src/crimson/net/Socket.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/net/Socket.cc 2022-09-08 21:47:01.195369872 +0200
-@@ -5,6 +5,7 @@
-
- #include <seastar/core/when_all.hh>
-
-+#include "msg/msg_fmt.h"
- #include "crimson/common/log.h"
- #include "Errors.h"
-
---- ceph-17.2.3/src/crimson/net/SocketMessenger.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/net/SocketMessenger.cc 2022-09-08 21:28:14.640010471 +0200
-@@ -18,11 +18,16 @@
-
- #include <tuple>
- #include <boost/functional/hash.hpp>
-+#include <fmt/os.h>
-
- #include "auth/Auth.h"
-+#include "msg/msg_fmt.h"
- #include "Errors.h"
- #include "Socket.h"
-
-+template <>
-+struct fmt::formatter<crimson::net::SocketMessenger> : ostream_formatter {};
-+
- namespace {
- seastar::logger& logger() {
- return crimson::get_logger(ceph_subsys_ms);
---- ceph-17.2.3/src/crimson/os/cyanstore/cyan_store.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/cyanstore/cyan_store.cc 2022-09-12 21:46:02.891292495 +0200
-@@ -7,8 +7,10 @@
- #include <fmt/format.h>
- #include <fmt/ostream.h>
-
-+#include "common/hobject_fmt.h"
- #include "common/safe_io.h"
- #include "os/Transaction.h"
-+#include "osd/osd_types_fmt.h"
-
- #include "crimson/common/buffer_io.h"
- #include "crimson/common/config_proxy.h"
-@@ -115,7 +117,7 @@ CyanStore::mkfs_ertr::future<> CyanStore
- } else {
- osd_fsid = new_osd_fsid;
- }
-- return write_meta("fsid", fmt::format("{}", osd_fsid));
-+ return write_meta("fsid", fmt::format("{}", fmt::streamed(osd_fsid)));
- } else if (r < 0) {
- return crimson::stateful_ec{ singleton_ec<read_meta_errmsg>() };
- } else {
-@@ -123,7 +125,7 @@ CyanStore::mkfs_ertr::future<> CyanStore
- if (!osd_fsid.parse(fsid_str.c_str())) {
- return crimson::stateful_ec{ singleton_ec<parse_fsid_errmsg>() };
- } else if (osd_fsid != new_osd_fsid) {
-- logger().error("on-disk fsid {} != provided {}", osd_fsid, new_osd_fsid);
-+ logger().error("on-disk fsid {} != provided {}", fmt::streamed(osd_fsid), fmt::streamed(new_osd_fsid));
- return crimson::stateful_ec{ singleton_ec<match_ofsid_errmsg>() };
- } else {
- return mkfs_ertr::now();
---- ceph-17.2.3/src/crimson/os/seastore/cache.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/cache.h 2022-09-14 16:25:29.215651215 +0200
-@@ -8,6 +8,7 @@
- #include "seastar/core/shared_future.hh"
-
- #include "include/buffer.h"
-+#include "include/types_fmt.h"
-
- #include "crimson/os/seastore/logging.h"
- #include "crimson/os/seastore/seastore_types.h"
-@@ -330,7 +331,7 @@ public:
- } else {
- SUBDEBUGT(seastore_cache,
- "Read extent at offset {} in cache: {}",
-- t, offset, *ref);
-+ t, offset, fmt::streamed(*ref));
- touch_extent(*ref);
- t.add_to_read_set(ref);
- return get_extent_iertr::make_ready_future<TCachedExtentRef<T>>(
---- ceph-17.2.3/src/crimson/os/seastore/cached_extent.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/cached_extent.h 2022-09-10 07:10:31.584611548 +0200
-@@ -837,3 +837,12 @@ using lextent_list_t = addr_extent_list_
- laddr_t, TCachedExtentRef<T>>;
-
- }
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::CachedExtent> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::LogicalCachedExtent> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::LBAPin> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/os/seastore/object_data_handler.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/object_data_handler.h 2022-09-11 17:30:31.253984098 +0200
-@@ -119,3 +119,6 @@ private:
- };
-
- }
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::ObjectDataBlock> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/os/seastore/onode.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/onode.h 2022-09-11 18:15:39.632135931 +0200
-@@ -81,3 +81,6 @@ public:
- std::ostream& operator<<(std::ostream &out, const Onode &rhs);
- using OnodeRef = boost::intrusive_ptr<Onode>;
- }
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::Onode> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/os/seastore/root_block.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/root_block.h 2022-09-09 21:38:11.463439115 +0200
-@@ -88,3 +88,6 @@ struct RootBlock : CachedExtent {
- using RootBlockRef = RootBlock::Ref;
-
- }
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::RootBlock> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/os/seastore/seastore_types.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/seastore_types.h 2022-09-10 07:02:01.794683539 +0200
-@@ -8,6 +8,7 @@
- #include <optional>
- #include <iostream>
- #include <vector>
-+#include <fmt/ostream.h>
-
- #include "include/byteorder.h"
- #include "include/denc.h"
-@@ -1589,3 +1590,30 @@ struct denc_traits<crimson::os::seastore
- reinterpret_cast<char*>(&o));
- }
- };
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::segment_id_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::paddr_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::device_type_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::journal_seq_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::delta_info_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::laddr_list_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::extent_types_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::extent_info_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::segment_header_t> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/os/seastore/segment_manager.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/segment_manager.h 2022-09-09 20:43:03.983800973 +0200
-@@ -261,3 +261,12 @@ WRITE_CLASS_DENC(
- WRITE_CLASS_DENC(
- crimson::os::seastore::block_sm_superblock_t
- )
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::block_sm_superblock_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::segment_manager_config_t> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::Segment::segment_state_t> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/os/seastore/transaction.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/transaction.h 2022-09-09 21:34:09.507446054 +0200
-@@ -4,6 +4,7 @@
- #pragma once
-
- #include <iostream>
-+#include <fmt/ostream.h>
-
- #include <boost/intrusive/list.hpp>
-
-@@ -505,3 +506,6 @@ template <typename T>
- using with_trans_ertr = typename T::base_ertr::template extend<crimson::ct_error::eagain>;
-
- }
-+
-+template <>
-+struct fmt::formatter<crimson::os::seastore::Transaction::src_t> : ostream_formatter {};
---- ceph-17.2.3/src/crimson/os/seastore/transaction_manager.h.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/transaction_manager.h 2022-09-14 16:25:42.966374227 +0200
-@@ -163,7 +163,7 @@ public:
- lba_manager->add_pin(extent.get_pin());
- }
- ).si_then([FNAME, &t](auto ref) mutable -> ret {
-- SUBDEBUGT(seastore_tm, "got extent {}", t, *ref);
-+ SUBDEBUGT(seastore_tm, "got extent {}", t, fmt::streamed(*ref));
- return pin_to_extent_ret<T>(
- interruptible::ready_future_marker{},
- std::move(ref));
-@@ -313,7 +313,7 @@ public:
- ext->set_pin(std::move(ref));
- stats.extents_allocated_total++;
- stats.extents_allocated_bytes += len;
-- SUBDEBUGT(seastore_tm, "new extent: {}, laddr_hint: {}", t, *ext, laddr_hint);
-+ SUBDEBUGT(seastore_tm, "new extent: {}, laddr_hint: {}", t, fmt::streamed(*ext), laddr_hint);
- return alloc_extent_iertr::make_ready_future<TCachedExtentRef<T>>(
- std::move(ext));
- });
---- ceph-17.2.3/src/crimson/os/seastore/extent_reader.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/extent_reader.cc 2022-09-09 21:47:09.444920952 +0200
-@@ -44,7 +44,7 @@ ExtentReader::read_segment_header(segmen
- logger().debug(
- "ExtentReader::read_segment_header: segment {} unable to decode "
- "header, skipping -- {}",
-- segment, e);
-+ segment, fmt::streamed(e));
- return crimson::ct_error::enodata::make();
- }
- logger().debug(
---- ceph-17.2.3/src/crimson/os/seastore/journal.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/journal.cc 2022-09-09 21:45:01.061536954 +0200
-@@ -2,6 +2,7 @@
- // vim: ts=8 sw=2 smarttab
-
- #include <iostream>
-+#include <fmt/os.h>
-
- #include <boost/iterator/counting_iterator.hpp>
-
---- ceph-17.2.3/src/crimson/os/seastore/seastore.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/seastore.cc 2022-09-12 21:36:15.057012562 +0200
-@@ -13,9 +13,11 @@
- #include <seastar/core/fstream.hh>
- #include <seastar/core/shared_mutex.hh>
-
-+#include "common/hobject_fmt.h"
- #include "common/safe_io.h"
- #include "include/stringify.h"
- #include "os/Transaction.h"
-+#include "osd/osd_types_fmt.h"
-
- #include "crimson/common/buffer_io.h"
-
-@@ -124,7 +126,7 @@ void SeaStore::register_metrics()
-
- for (auto& [op_type, label] : labels_by_op_type) {
- auto desc = fmt::format("latency of seastore operation (optype={})",
-- op_type);
-+ static_cast<uint8_t>(op_type));
- metrics.add_group(
- "seastore",
- {
---- ceph-17.2.3/src/crimson/os/seastore/seastore_types.cc.orig 2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crimson/os/seastore/seastore_types.cc 2022-09-09 20:12:53.796095116 +0200
-@@ -12,6 +12,9 @@ seastar::logger& logger() {