]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: make 'osd [out|in|down]' succeed if already whatever
authorSage Weil <sage@newdream.net>
Mon, 30 Jan 2012 05:46:53 +0000 (21:46 -0800)
committerSage Weil <sage@newdream.net>
Mon, 30 Jan 2012 21:41:56 +0000 (13:41 -0800)
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>
src/mon/OSDMonitor.cc

index d10bb99233d9d987586f353b2c6ca4fceb978b6d..e9e6a5fa592ad93f60eb757fd1a49f87007ca417 100644 (file)
@@ -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 {