diff options
author | Pavan Sondur <pavan@gluster.com> | 2010-08-30 16:05:16 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-08-30 22:47:29 -0700 |
commit | 1a1052461546576092f2f3b90c1f0f66817b18c2 (patch) | |
tree | 1bef06380ebcbf6409592549142ae56bc1383514 /xlators/mgmt/glusterd/src | |
parent | 80d091411f6d4b9bc6bd5f19c921bdb295611b5d (diff) |
mgmt/glusterd: Return replace-brick status
Signed-off-by: Pavan Vilas Sondur <pavan@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1322 (Replace brick should show status of paused and abort states)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1322
Diffstat (limited to 'xlators/mgmt/glusterd/src')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 3cea96c16..6dcd6131f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -1683,9 +1683,11 @@ out: static int rb_do_operation_status (glusterd_volinfo_t *volinfo, glusterd_brickinfo_t *src_brickinfo, - glusterd_brickinfo_t *dst_brickinfo) + glusterd_brickinfo_t *dst_brickinfo, + dict_t *dict) { - const char *status = NULL; + const char *status = NULL; + char *status_reply = NULL; int ret = -1; if (!glusterd_is_local_addr (src_brickinfo->hostname)) { @@ -1711,6 +1713,22 @@ rb_do_operation_status (glusterd_volinfo_t *volinfo, gf_log ("", GF_LOG_DEBUG, "pump status is %s", status); + status_reply = gf_strdup (status); + if (!status_reply) { + gf_log ("", GF_LOG_ERROR, + "Out of memory"); + ret = -1; + goto out; + } + + ret = dict_set_dynstr (dict, "status-reply", + status_reply); + if (ret) { + gf_log ("", GF_LOG_DEBUG, + "failed to set pump status in dict"); + goto out; + } + ret = rb_destroy_maintainence_client (volinfo, src_brickinfo); if (ret) { gf_log ("", GF_LOG_DEBUG, @@ -1809,26 +1827,28 @@ glusterd_op_replace_brick (gd1_mgmt_stage_op_req *req) switch (replace_op) { case GF_REPLACE_OP_START: - rb_do_operation_start (volinfo, src_brickinfo, dst_brickinfo); + ret = rb_do_operation_start (volinfo, src_brickinfo, dst_brickinfo); break; case GF_REPLACE_OP_COMMIT: - rb_do_operation_commit (volinfo, src_brickinfo, dst_brickinfo); + ret = rb_do_operation_commit (volinfo, src_brickinfo, dst_brickinfo); break; case GF_REPLACE_OP_PAUSE: - rb_do_operation_pause (volinfo, src_brickinfo, dst_brickinfo); + ret = rb_do_operation_pause (volinfo, src_brickinfo, dst_brickinfo); break; case GF_REPLACE_OP_ABORT: - rb_do_operation_abort (volinfo, src_brickinfo, dst_brickinfo); + ret = rb_do_operation_abort (volinfo, src_brickinfo, dst_brickinfo); break; case GF_REPLACE_OP_STATUS: - rb_do_operation_status (volinfo, src_brickinfo, dst_brickinfo); + ret = rb_do_operation_status (volinfo, src_brickinfo, dst_brickinfo, + dict); break; default: ret = -1; goto out; } - ret = 0; + if (ret) + goto out; out: return ret; |