From: Sage Weil Date: Mon, 30 Jan 2012 05:46:53 +0000 (-0800) Subject: mon: make 'osd [out|in|down]' succeed if already whatever X-Git-Tag: v0.44~112 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2adabbe52bbf4a15d1bc7b56a502db6683401f30;p=ceph.git mon: make 'osd [out|in|down]' succeed if already whatever If we want something out and it is already out, succeed. This makes the client command succeed if there is a transient error and it gets resent. Signed-off-by: Sage Weil --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index d10bb99233d9..e9e6a5fa592a 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -1687,6 +1687,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m) ss << "osd." << osd << " does not exist"; } else if (osdmap.is_down(osd)) { ss << "osd." << osd << " is already down"; + err = 0; } else { pending_inc.new_state[osd] = CEPH_OSD_UP; if (any) @@ -1710,6 +1711,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m) ss << "osd." << osd << " does not exist"; } else if (osdmap.is_out(osd)) { ss << "osd." << osd << " is already out"; + err = 0; } else { pending_inc.new_weight[osd] = CEPH_OSD_OUT; if (any) @@ -1731,6 +1733,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m) long osd = strtol(m->cmd[j].c_str(), 0, 10); if (osdmap.is_in(osd)) { ss << "osd." << osd << " is already in"; + err = 0; } else if (!osdmap.exists(osd)) { ss << "osd." << osd << " does not exist"; } else {