return -EAGAIN; // don't propose yet; wait for message to be retried
}
+ } else if (prefix == "mds repaired") {
+ mds_rank_t rank;
+ cmd_getval(g_ceph_context, cmdmap, "rank", rank);
+ if (pending_mdsmap.damaged.count(rank)) {
+ dout(4) << "repaired: restoring rank " << rank << dendl;
+ pending_mdsmap.damaged.erase(rank);
+ pending_mdsmap.failed.insert(rank);
+ } else {
+ dout(4) << "repaired: no-op on rank " << rank << dendl;
+ }
+ r = 0;
} else if (prefix == "mds rm") {
mds_gid_t gid;
if (!cmd_getval(g_ceph_context, cmdmap, "gid", gid)) {
"set mds state of <gid> to <numeric-state>", "mds", "rw", "cli,rest")
COMMAND("mds fail name=who,type=CephString", \
"force mds to status failed", "mds", "rw", "cli,rest")
+COMMAND("mds repaired name=rank,type=CephInt", \
+ "mark a damaged MDS rank as no longer damaged", "mds", "rw", "cli,rest")
COMMAND("mds rm " \
"name=gid,type=CephInt,range=0 " \
"name=who,type=CephName", \