diff options
author | Sage Weil <sage@newdream.net> | 2012-01-29 21:46:53 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2012-01-30 13:41:56 -0800 |
commit | 2adabbe52bbf4a15d1bc7b56a502db6683401f30 (patch) | |
tree | 5b8e39c676924d6369f6a7206e7f592e225e561d | |
parent | 483c089c1bc035ddd26729bcb72d61f4a969f856 (diff) | |
download | ceph-2adabbe52bbf4a15d1bc7b56a502db6683401f30.tar.gz |
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 <sage@newdream.net>
-rw-r--r-- | src/mon/OSDMonitor.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index d10bb99233d..e9e6a5fa592 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 { |