From 124aa74deb87b849f8a8ab57c659e7e9b115f29a Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Sun, 1 Nov 2020 11:30:38 +0800 Subject: [PATCH] crimson/osd: report statfs data Signed-off-by: Xuehan Xu --- src/crimson/mgr/client.cc | 1 - src/crimson/mgr/client.h | 1 - src/crimson/osd/osd.cc | 10 +++++++++- src/crimson/osd/osd.h | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/crimson/mgr/client.cc b/src/crimson/mgr/client.cc index 1c8c3fd889f0e..fcc8f8326070a 100644 --- a/src/crimson/mgr/client.cc +++ b/src/crimson/mgr/client.cc @@ -148,7 +148,6 @@ seastar::future<> Client::handle_mgr_conf(crimson::net::Connection* conn, void Client::report() { - with_stats.update_stats(); gate.dispatch_in_background(__func__, *this, [this] { assert(conn); auto pg_stats = with_stats.get_stats(); diff --git a/src/crimson/mgr/client.h b/src/crimson/mgr/client.h index 742cf0c002610..19e4cd6ee25d4 100644 --- a/src/crimson/mgr/client.h +++ b/src/crimson/mgr/client.h @@ -24,7 +24,6 @@ namespace crimson::mgr // implement WithStats if you want to report stats to mgr periodically class WithStats { public: - virtual void update_stats() = 0; virtual MessageRef get_stats() const = 0; virtual ~WithStats() {} }; diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index f991c0534cab7..430d8ed2ebb0e 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -89,7 +89,10 @@ OSD::OSD(int id, uint32_t nonce, shard_services{*this, whoami, *cluster_msgr, *public_msgr, *monc, *mgrc, *store}, heartbeat{new Heartbeat{whoami, shard_services, *monc, hb_front_msgr, hb_back_msgr}}, // do this in background - tick_timer{[this] { update_heartbeat_peers(); }}, + tick_timer{[this] { + update_heartbeat_peers(); + update_stats(); + }}, asok{seastar::make_lw_shared()}, osdmap_gate("OSD::osdmap_gate", std::make_optional(std::ref(shard_services))) { @@ -721,6 +724,11 @@ void OSD::update_stats() osd_stat.up_from = get_up_epoch(); osd_stat.hb_peers = heartbeat->get_peers(); osd_stat.seq = (static_cast(get_up_epoch()) << 32) | osd_stat_seq; + gate.dispatch_in_background("statfs", *this, [this] { + (void) store->stat().then([this](store_statfs_t&& st) { + osd_stat.statfs = st; + }); + }); } MessageRef OSD::get_stats() const diff --git a/src/crimson/osd/osd.h b/src/crimson/osd/osd.h index 82563767d67fb..72a892fb2ffbc 100644 --- a/src/crimson/osd/osd.h +++ b/src/crimson/osd/osd.h @@ -105,7 +105,7 @@ class OSD final : public crimson::net::Dispatcher, // pg statistics including osd ones osd_stat_t osd_stat; uint32_t osd_stat_seq = 0; - void update_stats() final; + void update_stats(); MessageRef get_stats() const final; // AuthHandler methods -- 2.39.5