diff options
author | Sage Weil <sage@inktank.com> | 2012-12-18 19:20:06 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-12-18 19:20:06 -0800 |
commit | 5f24e23b19df18bc6958595228f4bd37c88b24d7 (patch) | |
tree | 74b87db3118b452d5754fe5142531e7b228ca03e | |
parent | b00eb6fd872a0d0decac9ca3bf9c122b7ee0fec2 (diff) | |
download | ceph-5f24e23b19df18bc6958595228f4bd37c88b24d7.tar.gz |
ceph: fix error reporting when tell target is invalid or down
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/tools/common.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/tools/common.cc b/src/tools/common.cc index 9a454f7e7d8..9679f08834e 100644 --- a/src/tools/common.cc +++ b/src/tools/common.cc @@ -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) |