summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-12-18 19:20:06 -0800
committerSage Weil <sage@inktank.com>2012-12-18 19:20:06 -0800
commit5f24e23b19df18bc6958595228f4bd37c88b24d7 (patch)
tree74b87db3118b452d5754fe5142531e7b228ca03e
parentb00eb6fd872a0d0decac9ca3bf9c122b7ee0fec2 (diff)
downloadceph-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.cc12
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)