From: Sage Weil Date: Mon, 23 Nov 2009 23:42:03 +0000 (-0800) Subject: mon: add 'mds set_state ' X-Git-Tag: v0.18~53 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fd21693fa6b8bf33fc214248730610a8b9730c97;p=ceph.git mon: add 'mds set_state ' For mdsmon disaster recovery :) --- diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index acc2151217ac..43763a5a6e8d 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -501,6 +501,20 @@ bool MDSMonitor::prepare_command(MMonCommand *m) //} else //ss << "mdsmap fsid " << map.fsid << " does not match monitor fsid " << mon->monmap->fsid; } + else if (m->cmd[1] == "set_state" && m->cmd.size() == 4) { + __u64 gid = atoi(m->cmd[2].c_str()); + int state = atoi(m->cmd[3].c_str()); + if (!pending_mdsmap.is_dne_gid(gid)) { + MDSMap::mds_info_t& info = pending_mdsmap.get_info_gid(gid); + info.state = state; + stringstream ss; + ss << "set mds gid " << gid << " to state " << state << " " << ceph_mds_state_name(state); + string rs; + getline(ss, rs); + paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); + return true; + } + } } if (r == -EINVAL) ss << "unrecognized command";