]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph: fix error reporting when tell target is invalid or down
authorSage Weil <sage@inktank.com>
Wed, 19 Dec 2012 03:20:06 +0000 (19:20 -0800)
committerSage Weil <sage@inktank.com>
Wed, 19 Dec 2012 03:20:06 +0000 (19:20 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/tools/common.cc

index 9a454f7e7d8de0cb67f57d79090cc2528d56a6e4..9679f08834eded68b2f2ce58eb485a9f2c8e1af8 100644 (file)
@@ -140,12 +140,14 @@ static void send_command(CephToolCtx *ctx)
       reply_rs = "error mapping pgid to an osd";
       reply_rc = -EINVAL;
       reply = true;
+      cmd_cond.Signal();
       return;
     }
     if (r == 0) {
       reply_rs = "pgid currently maps to no osd";
       reply_rc = -ENOENT;
       reply = true;
+      cmd_cond.Signal();
       return;
     }
     pending_target.set_name(entity_name_t::OSD(osds[0]));
@@ -156,14 +158,23 @@ static void send_command(CephToolCtx *ctx)
     char *end;
     int n = strtoll(start, &end, 10);
     if (end <= start) {
+      stringstream ss;
+      ss << "invalid osd id " << pending_target;
+      reply_rs = ss.str();
       reply_rc = -EINVAL;
       reply = true;
+      cmd_cond.Signal();
       return;
     }
     
     if (!osdmap->is_up(n)) {
+      stringstream ss;
+      ss << pending_target << " is not up";
+      reply_rs = ss.str();
       reply_rc = -ESRCH;
       reply = true;
+      cmd_cond.Signal();
+      return;
     } else {
       if (!ctx->concise)
        *ctx->log << ceph_clock_now(g_ceph_context) << " " << pending_target << " <- " << pending_cmd << std::endl;
@@ -186,6 +197,7 @@ static void send_command(CephToolCtx *ctx)
 
   reply_rc = -EINVAL;
   reply = true;
+  cmd_cond.Signal();
 }
 
 static void handle_osd_map(CephToolCtx *ctx, MOSDMap *m)