"set the minimum allowed OSD release to participate in the cluster",
"osd", "rw")
COMMAND("osd down " \
- "type=CephString,name=ids,n=N", \
+ "name=ids,type=CephString,n=N "
+ "name=definitely_dead,type=CephBool,req=false", \
"set osd(s) <id> [<id>...] down, " \
"or use <any|all> to set all osds down", \
"osd", "rw")
bool any = false;
bool stop = false;
bool verbose = true;
+ bool definitely_dead = false;
vector<string> idvec;
cmd_getval(cct, cmdmap, "ids", idvec);
+ cmd_getval(cct, cmdmap, "definitely_dead", definitely_dead);
+ derr << "definitely_dead " << (int)definitely_dead << dendl;
for (unsigned j = 0; j < idvec.size() && !stop; j++) {
set<int> osds;
ss << "marked down osd." << osd << ". ";
any = true;
}
+ if (definitely_dead) {
+ if (!pending_inc.new_xinfo.count(osd)) {
+ pending_inc.new_xinfo[osd] = osdmap.osd_xinfo[osd];
+ }
+ if (pending_inc.new_xinfo[osd].dead_epoch < pending_inc.epoch) {
+ any = true;
+ }
+ pending_inc.new_xinfo[osd].dead_epoch = pending_inc.epoch;
+ }
} else if (prefix == "osd out") {
if (osdmap.is_out(osd)) {
if (verbose)