f->close_section();
}
+void MDSMonitor::get_versions(std::map<string, list<string> > &versions)
+{
+ map<mds_gid_t,Metadata> meta;
+ load_metadata(meta);
+ const auto &fsmap = get_fsmap();
+ std::map<mds_gid_t, mds_info_t> map = fsmap.get_mds_info();
+ dout(10) << __func__ << " mds meta=" << meta << dendl;
+ for (auto& p : meta) {
+ auto q = p.second.find("ceph_version_short");
+ if (q == p.second.end()) continue;
+ versions[q->second].push_back(string("mds.") + map[p.first].name);
+ }
+}
+
int MDSMonitor::dump_metadata(const FSMap& fsmap, const std::string &who,
Formatter *f, ostream& err)
{
void count_metadata(const std::string& field, ceph::Formatter *f);
public:
void count_metadata(const std::string& field, std::map<std::string,int> *out);
+ void get_versions(std::map<string, list<string> > &versions);
protected:
// MDS daemon GID to latest health state from that GID
osdmon()->get_versions(versions);
// mgr
mgrmon()->get_versions(versions);
+ // mds
+ mdsmon()->get_versions(versions);
dout(20) << __func__ << " all versions=" << versions << dendl;
}