From: Greg Farnum Date: Sat, 11 Mar 2017 03:09:22 +0000 (-0800) Subject: mon: mgr: send a pgmap in reports X-Git-Tag: ses5-milestone6~8^2~19^2~124 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=759c7d0aee11acf3a14492c239d2bc5493cb841f;p=ceph.git mon: mgr: send a pgmap in reports This definitely isn't appropriate for long term but is a quick route to testing Signed-off-by: Greg Farnum --- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d96057c20d87..d1f83dea911a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -464,6 +464,7 @@ set(libcommon_files msg/simple/Accepter.cc msg/DispatchQueue.cc msg/Message.cc + mon/PGMap.cc osd/ECMsgTypes.cc osd/HitSet.cc common/RefCountedObj.cc diff --git a/src/messages/MMonMgrReport.h b/src/messages/MMonMgrReport.h index d45a1e545f95..20ac9aa35eae 100644 --- a/src/messages/MMonMgrReport.h +++ b/src/messages/MMonMgrReport.h @@ -17,6 +17,7 @@ #include "messages/PaxosServiceMessage.h" #include "include/types.h" +#include "mon/PGMap.h" class MMonMgrReport : public PaxosServiceMessage { @@ -34,6 +35,7 @@ private: public: bool needs_send = false; + PGMap pg_map; const char *get_type_name() const override { return "monmgrreport"; } void print(ostream& out) const override { @@ -42,10 +44,14 @@ public: void encode_payload(uint64_t features) override { paxos_encode(); + bufferlist pmb; + pg_map.encode(pmb); + payload.append(pmb); } void decode_payload() override { bufferlist::iterator p = payload.begin(); paxos_decode(p); + ::decode(pg_map, p); } }; diff --git a/src/mgr/ClusterState.cc b/src/mgr/ClusterState.cc index d96d1e99e3b7..b23628473c74 100644 --- a/src/mgr/ClusterState.cc +++ b/src/mgr/ClusterState.cc @@ -117,4 +117,6 @@ void ClusterState::notify_osdmap(const OSDMap &osd_map) void ClusterState::tick(MMonMgrReport *m) { dout(0) << __func__ << dendl; + m->pg_map = pg_map; + m->needs_send = true; } diff --git a/src/mon/MgrMonitor.cc b/src/mon/MgrMonitor.cc index 77324fb9a974..a3485e561878 100644 --- a/src/mon/MgrMonitor.cc +++ b/src/mon/MgrMonitor.cc @@ -250,6 +250,7 @@ bool MgrMonitor::preprocess_report(MonOpRequestRef op) { return false; } bool MgrMonitor::prepare_report(MonOpRequestRef op) { MMonMgrReport *m = static_cast(op->get_req()); + pg_map = m->pg_map; return true; } diff --git a/src/mon/MgrMonitor.h b/src/mon/MgrMonitor.h index d45d853ceb56..e0d82177473a 100644 --- a/src/mon/MgrMonitor.h +++ b/src/mon/MgrMonitor.h @@ -15,6 +15,7 @@ #include "include/Context.h" #include "MgrMap.h" #include "PaxosService.h" +#include "PGMap.h" class MgrMonitor : public PaxosService @@ -42,6 +43,7 @@ class MgrMonitor : public PaxosService bool check_caps(MonOpRequestRef op, const uuid_d& fsid); public: + PGMap pg_map; MgrMonitor(Monitor *mn, Paxos *p, const string& service_name) : PaxosService(mn, p, service_name) {} diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 560ca7acc2c0..69bb9dbc0b9e 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -2576,7 +2576,7 @@ void Monitor::get_cluster_status(stringstream &ss, Formatter *f) osdmon()->osdmap.print_summary(f, cout); f->close_section(); f->open_object_section("pgmap"); - pgmon()->pg_map.print_summary(f, NULL); + mgrmon()->pg_map.print_summary(f, NULL); f->close_section(); f->open_object_section("fsmap"); mdsmon()->get_fsmap().print_summary(f, NULL); @@ -2620,7 +2620,7 @@ void Monitor::get_cluster_status(stringstream &ss, Formatter *f) osdmon()->osdmap.print_summary(NULL, ss); ss << "\n \n data:\n"; - pgmon()->pg_map.print_summary(NULL, &ss); + mgrmon()->pg_map.print_summary(NULL, &ss); ss << "\n "; } } @@ -3086,10 +3086,10 @@ void Monitor::handle_command(MonOpRequestRef op) if (f) f->open_object_section("stats"); - pgmon()->pg_map.dump_fs_stats(&ds, f.get(), verbose); + mgrmon()->pg_map.dump_fs_stats(&ds, f.get(), verbose); if (!f) ds << '\n'; - pgmon()->pg_map.dump_pool_stats(osdmon()->osdmap, &ds, f.get(), verbose); + mgrmon()->pg_map.dump_pool_stats(osdmon()->osdmap, &ds, f.get(), verbose); if (f) { f->close_section();