mirror of
https://github.com/ceph/ceph
synced 2025-02-19 17:08:05 +00:00
mon/OSDMonitor: move osd metadata dump into a helper
Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
d39ff4c3d8
commit
c4f817f9cd
@ -605,6 +605,27 @@ void OSDMonitor::encode_pending(MonitorDBStore::Transaction *t)
|
||||
pending_metadata_rm.clear();
|
||||
}
|
||||
|
||||
int OSDMonitor::dump_osd_metadata(int osd, Formatter *f, ostream *err)
|
||||
{
|
||||
bufferlist bl;
|
||||
int r = mon->store->get(OSD_METADATA_PREFIX, stringify(osd), bl);
|
||||
if (r < 0)
|
||||
return r;
|
||||
map<string,string> m;
|
||||
try {
|
||||
bufferlist::iterator p = bl.begin();
|
||||
::decode(m, p);
|
||||
}
|
||||
catch (buffer::error& e) {
|
||||
if (err)
|
||||
*err << "osd." << osd << " metadata is corrupt";
|
||||
return -EIO;
|
||||
}
|
||||
for (map<string,string>::iterator p = m.begin(); p != m.end(); ++p)
|
||||
f->dump_string(p->first.c_str(), p->second);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void OSDMonitor::share_map_with_random_osd()
|
||||
{
|
||||
if (osdmap.get_num_up_osds() == 0) {
|
||||
@ -2154,17 +2175,10 @@ bool OSDMonitor::preprocess_command(MMonCommand *m)
|
||||
string format;
|
||||
cmd_getval(g_ceph_context, cmdmap, "format", format, string("json-pretty"));
|
||||
boost::scoped_ptr<Formatter> f(new_formatter(format));
|
||||
|
||||
bufferlist bl;
|
||||
mon->store->get(OSD_METADATA_PREFIX, stringify(osd), bl);
|
||||
map<string,string> m;
|
||||
if (bl.length()) {
|
||||
bufferlist::iterator p = bl.begin();
|
||||
::decode(m, p);
|
||||
}
|
||||
f->open_object_section("osd_metadata");
|
||||
for (map<string,string>::iterator p = m.begin(); p != m.end(); ++p)
|
||||
f->dump_string(p->first.c_str(), p->second);
|
||||
r = dump_osd_metadata(osd, f.get(), &ss);
|
||||
if (r < 0)
|
||||
goto reply;
|
||||
f->close_section();
|
||||
f->flush(rdata);
|
||||
} else if (prefix == "osd map") {
|
||||
|
@ -343,6 +343,7 @@ private:
|
||||
epoch_t blacklist(const entity_addr_t& a, utime_t until);
|
||||
|
||||
void dump_info(Formatter *f);
|
||||
int dump_osd_metadata(int osd, Formatter *f, ostream *err);
|
||||
|
||||
void check_subs();
|
||||
void check_sub(Subscription *sub);
|
||||
|
Loading…
Reference in New Issue
Block a user