summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2012-01-29 21:46:53 -0800
committerSage Weil <sage@newdream.net>2012-01-30 13:41:56 -0800
commit2adabbe52bbf4a15d1bc7b56a502db6683401f30 (patch)
tree5b8e39c676924d6369f6a7206e7f592e225e561d
parent483c089c1bc035ddd26729bcb72d61f4a969f856 (diff)
downloadceph-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.cc3
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 {