CephContext *cct) const override;
void tick() override;
+ uint64_t get_last_osd_stat_seq(int osd) {
+ return digest.get_last_osd_stat_seq(osd);
+ }
+
+
void print_summary(Formatter *f, std::ostream *ss) const;
PGStatService *get_pg_stat_service();
COMMAND("pg map name=pgid,type=CephPgid", "show mapping of pg to osds", \
"pg", "r", "cli,rest")
+COMMAND("osd last-stat-seq name=id,type=CephOsdName", \
+ "get the last pg stats sequence number reported for this osd", \
+ "osd", "r", "cli,rest")
/*
* auth commands AuthMonitor.cc
mdsmon()->dispatch(op);
return;
}
- if (module == "osd" || prefix == "pg map") {
+ if ((module == "osd" || prefix == "pg map") &&
+ prefix != "osd last-stat-seq") {
osdmon()->dispatch(op);
return;
}
ss2 << "report " << rdata.crc32c(CEPH_MON_PORT);
rs = ss2.str();
r = 0;
+ } else if (prefix == "osd last-stat-seq") {
+ int64_t osd;
+ cmd_getval(g_ceph_context, cmdmap, "id", osd);
+ uint64_t seq = mgrstatmon()->get_last_osd_stat_seq(osd);
+ if (f) {
+ f->dump_unsigned("seq", seq);
+ f->flush(ds);
+ } else {
+ ds << seq;
+ rdata.append(ds);
+ }
+ rs = "";
+ r = 0;
} else if (prefix == "node ls") {
string node_type("all");
cmd_getval(g_ceph_context, cmdmap, "type", node_type);