From 1dcab1c770b07f523f15870d5bef201a93546acc Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 28 Aug 2017 16:21:13 -0400 Subject: [PATCH] mon: drop PGMapStatService There is only one user and one implementation; this just makes the code hard to read. Signed-off-by: Sage Weil --- src/mgr/ClusterState.cc | 3 +- src/mgr/ClusterState.h | 10 ---- src/mgr/DaemonServer.cc | 4 +- src/mon/PGMap.h | 100 +++++----------------------------------- src/osd/OSDMap.cc | 40 ++++++++-------- src/osd/OSDMap.h | 4 +- 6 files changed, 37 insertions(+), 124 deletions(-) diff --git a/src/mgr/ClusterState.cc b/src/mgr/ClusterState.cc index b727ac1867e..70eea257199 100644 --- a/src/mgr/ClusterState.cc +++ b/src/mgr/ClusterState.cc @@ -29,8 +29,7 @@ ClusterState::ClusterState( : monc(monc_), objecter(objecter_), lock("ClusterState"), - mgr_map(mgrmap), - pgservice(pg_map) + mgr_map(mgrmap) {} void ClusterState::set_objecter(Objecter *objecter_) diff --git a/src/mgr/ClusterState.h b/src/mgr/ClusterState.h index 9513c763bd0..edc911ba6a6 100644 --- a/src/mgr/ClusterState.h +++ b/src/mgr/ClusterState.h @@ -47,8 +47,6 @@ protected: PGMap pg_map; PGMap::Incremental pending_inc; - PGMapStatService pgservice; - bufferlist health_json; bufferlist mon_status_json; @@ -105,14 +103,6 @@ public: return std::forward(cb)(pg_map, std::forward(args)...); } - template - auto with_pgservice(Callback&& cb, Args&&...args) const -> - decltype(cb(pgservice, std::forward(args)...)) - { - Mutex::Locker l(lock); - return std::forward(cb)(pg_map, std::forward(args)...); - } - template void with_monmap(Args &&... args) const { diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index ff520b17359..c5f31c8503a 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -914,9 +914,9 @@ bool DaemonServer::handle_command(MCommand *m) } else if (prefix == "osd df") { string method; cmd_getval(g_ceph_context, cmdctx->cmdmap, "output_method", method); - r = cluster_state.with_pgservice([&](const PGMapStatService& pgservice) { + r = cluster_state.with_pgmap([&](const PGMap& pgmap) { return cluster_state.with_osdmap([&](const OSDMap& osdmap) { - print_osd_utilization(osdmap, &pgservice, ss, + print_osd_utilization(osdmap, pgmap, ss, f.get(), method == "tree"); cmdctx->odata.append(ss); diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 32282273834..0e61f02d8bf 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -412,6 +412,18 @@ public: return pool_stat_t(); } + const osd_stat_t& get_osd_sum() const { + return osd_sum; + } + + const osd_stat_t *get_osd_stat(int osd) const { + auto i = osd_stat.find(osd); + if (i == osd_stat.end()) { + return nullptr; + } + return &i->second; + } + void update_pg(pg_t pgid, bufferlist& bl); void remove_pg(pg_t pgid); @@ -590,92 +602,4 @@ namespace reweight { Formatter *f); } - -class PGMapStatService : virtual public PGStatService { -protected: - const PGMap& pgmap; -public: - PGMapStatService(const PGMap& o) - : pgmap(o) {} - - bool is_readable() const override { return true; } - - const pool_stat_t* get_pool_stat(int64_t poolid) const override { - auto i = pgmap.pg_pool_sum.find(poolid); - if (i != pgmap.pg_pool_sum.end()) { - return &i->second; - } - return nullptr; - } - - const osd_stat_t& get_osd_sum() const override { return pgmap.osd_sum; } - - const osd_stat_t *get_osd_stat(int osd) const override { - auto i = pgmap.osd_stat.find(osd); - if (i == pgmap.osd_stat.end()) { - return nullptr; - } - return &i->second; - } - const mempool::pgmap::unordered_map& get_osd_stat() const override { - return pgmap.osd_stat; - } - float get_full_ratio() const override { return pgmap.full_ratio; } - float get_nearfull_ratio() const override { return pgmap.nearfull_ratio; } - - bool have_creating_pgs() const override { - return !pgmap.creating_pgs.empty(); - } - bool is_creating_pg(pg_t pgid) const override { - return pgmap.creating_pgs.count(pgid); - } - - epoch_t get_min_last_epoch_clean() const override { - return pgmap.get_min_last_epoch_clean(); - } - - bool have_full_osds() const override { return !pgmap.full_osds.empty(); } - bool have_nearfull_osds() const override { - return !pgmap.nearfull_osds.empty(); - } - - size_t get_num_pg_by_osd(int osd) const override { - return pgmap.get_num_pg_by_osd(osd); - } - ceph_statfs get_statfs(OSDMap& osd_map, - boost::optional data_pool) const override { - ceph_statfs statfs; - statfs.kb = pgmap.osd_sum.kb; - statfs.kb_used = pgmap.osd_sum.kb_used; - statfs.kb_avail = pgmap.osd_sum.kb_avail; - statfs.num_objects = pgmap.pg_sum.stats.sum.num_objects; - return statfs; - } - void print_summary(Formatter *f, ostream *out) const override { - pgmap.print_summary(f, out); - } - virtual void dump_info(Formatter *f) const override { - f->dump_object("pgmap", pgmap); - } - void dump_fs_stats(stringstream *ss, - Formatter *f, - bool verbose) const override { - pgmap.dump_fs_stats(ss, f, verbose); - } - void dump_pool_stats(const OSDMap& osdm, stringstream *ss, Formatter *f, - bool verbose) const override { - pgmap.dump_pool_stats_full(osdm, ss, f, verbose); - } - - int process_pg_command(const string& prefix, - const map& cmdmap, - const OSDMap& osdmap, - Formatter *f, - stringstream *ss, - bufferlist *odata) const override { - return process_pg_map_command(prefix, cmdmap, pgmap, osdmap, f, ss, odata); - } -}; - - #endif diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index dc78ab9a83f..7ed0d2f7464 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -30,8 +30,8 @@ #include "crush/CrushTreeDumper.h" #include "common/Clock.h" -#include "mon/PGStatService.h" - +#include "mon/PGMap.h" + #define dout_subsys ceph_subsys_osd MEMPOOL_DEFINE_OBJECT_FACTORY(OSDMap, osdmap, osdmap); @@ -3968,10 +3968,10 @@ public: typedef CrushTreeDumper::Dumper Parent; OSDUtilizationDumper(const CrushWrapper *crush, const OSDMap *osdmap_, - const PGStatService *pgs_, bool tree_) : + const PGMap& pgmap_, bool tree_) : Parent(crush, osdmap_->get_pool_names()), osdmap(osdmap_), - pgs(pgs_), + pgmap(pgmap_), tree(tree_), average_util(average_utilization()), min_var(-1), @@ -4003,7 +4003,7 @@ protected: if (average_util) var = util / average_util; - size_t num_pgs = qi.is_bucket() ? 0 : pgs->get_num_pg_by_osd(qi.id); + size_t num_pgs = qi.is_bucket() ? 0 : pgmap.get_num_pg_by_osd(qi.id); dump_item(qi, reweight, kb, kb_used, kb_avail, util, var, num_pgs, f); @@ -4050,7 +4050,7 @@ protected: bool get_osd_utilization(int id, int64_t* kb, int64_t* kb_used, int64_t* kb_avail) const { - const osd_stat_t *p = pgs->get_osd_stat(id); + const osd_stat_t *p = pgmap.get_osd_stat(id); if (!p) return false; *kb = p->kb; *kb_used = p->kb_used; @@ -4088,7 +4088,7 @@ protected: protected: const OSDMap *osdmap; - const PGStatService *pgs; + const PGMap& pgmap; bool tree; double average_util; double min_var; @@ -4103,8 +4103,8 @@ public: typedef OSDUtilizationDumper Parent; OSDUtilizationPlainDumper(const CrushWrapper *crush, const OSDMap *osdmap, - const PGStatService *pgs, bool tree) : - Parent(crush, osdmap, pgs, tree) {} + const PGMap& pgmap, bool tree) : + Parent(crush, osdmap, pgmap, tree) {} void dump(TextTable *tbl) { tbl->define_column("ID", TextTable::LEFT, TextTable::RIGHT); @@ -4127,9 +4127,9 @@ public: *tbl << "" << "" << "" << "TOTAL" - << si_t(pgs->get_osd_sum().kb << 10) - << si_t(pgs->get_osd_sum().kb_used << 10) - << si_t(pgs->get_osd_sum().kb_avail << 10) + << si_t(pgmap.get_osd_sum().kb << 10) + << si_t(pgmap.get_osd_sum().kb_used << 10) + << si_t(pgmap.get_osd_sum().kb_avail << 10) << lowprecision_t(average_util) << "" << TextTable::endrow; @@ -4216,8 +4216,8 @@ public: typedef OSDUtilizationDumper Parent; OSDUtilizationFormatDumper(const CrushWrapper *crush, const OSDMap *osdmap, - const PGStatService *pgs, bool tree) : - Parent(crush, osdmap, pgs, tree) {} + const PGMap& pgmap, bool tree) : + Parent(crush, osdmap, pgmap, tree) {} void dump(Formatter *f) { f->open_array_section("nodes"); @@ -4256,9 +4256,9 @@ protected: public: void summary(Formatter *f) { f->open_object_section("summary"); - f->dump_int("total_kb", pgs->get_osd_sum().kb); - f->dump_int("total_kb_used", pgs->get_osd_sum().kb_used); - f->dump_int("total_kb_avail", pgs->get_osd_sum().kb_avail); + f->dump_int("total_kb", pgmap.get_osd_sum().kb); + f->dump_int("total_kb_used", pgmap.get_osd_sum().kb_used); + f->dump_int("total_kb_avail", pgmap.get_osd_sum().kb_avail); f->dump_float("average_utilization", average_util); f->dump_float("min_var", min_var); f->dump_float("max_var", max_var); @@ -4268,7 +4268,7 @@ public: }; void print_osd_utilization(const OSDMap& osdmap, - const PGStatService *pgstat, + const PGMap& pgmap, ostream& out, Formatter *f, bool tree) @@ -4276,13 +4276,13 @@ void print_osd_utilization(const OSDMap& osdmap, const CrushWrapper *crush = osdmap.crush.get(); if (f) { f->open_object_section("df"); - OSDUtilizationFormatDumper d(crush, &osdmap, pgstat, tree); + OSDUtilizationFormatDumper d(crush, &osdmap, pgmap, tree); d.dump(f); d.summary(f); f->close_section(); f->flush(out); } else { - OSDUtilizationPlainDumper d(crush, &osdmap, pgstat, tree); + OSDUtilizationPlainDumper d(crush, &osdmap, pgmap, tree); TextTable tbl; d.dump(&tbl); out << tbl << d.summary() << "\n"; diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index e676bff0a72..2cd26f2a33b 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -1384,10 +1384,10 @@ inline ostream& operator<<(ostream& out, const OSDMap& m) { return out; } -class PGStatService; +class PGMap; void print_osd_utilization(const OSDMap& osdmap, - const PGStatService *pgstat, + const PGMap& pgmap, ostream& out, Formatter *f, bool tree); -- 2.39.5