summaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
authorGaurav Kumar Garg <ggarg@redhat.com>2015-02-15 19:22:13 +0530
committerKrishnan Parthasarathi <kparthas@redhat.com>2015-04-09 17:21:06 +0000
commit2788ddd3a0afa98f78128247cca89427a323b090 (patch)
tree4568c2a808caa62cc06516e6fd3f392250e4217f /cli
parente405f6e419387d160f6564d15ad9fd3a43af0d10 (diff)
glusterd: remove-brick status/stop should not show output for non-existing brick
Previously when user start remove-brick operation on a volume then by giving non-existing brick for remove-brick status/stop command it was showing remove-brick status/stoping remove-brick operation on a volume. With this fix it will validate bricks which user have given for remove-brick status/stop command and if bricks are part of volume then it will show statistics of remove-brick operation otherwise it will show error "Incorrect brick <brick_name> for <volume_name>". Change-Id: I151284ef78c25f52d1b39cdbd71ebfb9eb4b8471 BUG: 1121584 Signed-off-by: Gaurav Kumar Garg <ggarg@redhat.com> Reviewed-on: http://review.gluster.org/9681 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com> Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'cli')
-rw-r--r--cli/src/cli-cmd-parser.c8
-rw-r--r--cli/src/cli-rpc-ops.c22
2 files changed, 8 insertions, 22 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index a334fd931bf..140b021e363 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -1721,9 +1721,11 @@ cli_cmd_volume_remove_brick_parse (const char **words, int wordcount,
goto out;
}
- ret = dict_set_int32 (dict, "count", brick_count);
- if (ret)
- goto out;
+ if (command != GF_OP_CMD_STATUS && command != GF_OP_CMD_STOP) {
+ ret = dict_set_int32 (dict, "count", brick_count);
+ if (ret)
+ goto out;
+ }
*options = dict;
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 6bfe78e4354..5a95cff88e3 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -3925,7 +3925,7 @@ out:
int32_t
gf_cli_remove_brick (call_frame_t *frame, xlator_t *this,
- void *data)
+ void *data)
{
gf_cli_req req = {{0,}};;
gf_cli_req status_req = {{0,}};;
@@ -3933,7 +3933,6 @@ gf_cli_remove_brick (call_frame_t *frame, xlator_t *this,
dict_t *dict = NULL;
int32_t command = 0;
char *volname = NULL;
- dict_t *req_dict = NULL;
int32_t cmd = 0;
if (!frame || !this || !data) {
@@ -3961,25 +3960,12 @@ gf_cli_remove_brick (call_frame_t *frame, xlator_t *this,
cli_rpc_prog, NULL);
} else {
/* Need rebalance status to be sent :-) */
- req_dict = dict_new ();
- if (!req_dict) {
- ret = -1;
- goto out;
- }
-
- ret = dict_set_str (req_dict, "volname", volname);
- if (ret) {
- gf_log (this->name, GF_LOG_ERROR,
- "Failed to set dict");
- goto out;
- }
-
if (command == GF_OP_CMD_STATUS)
cmd |= GF_DEFRAG_CMD_STATUS;
else
cmd |= GF_DEFRAG_CMD_STOP;
- ret = dict_set_int32 (req_dict, "rebalance-command", (int32_t) cmd);
+ ret = dict_set_int32 (dict, "rebalance-command", (int32_t) cmd);
if (ret) {
gf_log (this->name, GF_LOG_ERROR,
"Failed to set dict");
@@ -3988,15 +3974,13 @@ gf_cli_remove_brick (call_frame_t *frame, xlator_t *this,
ret = cli_to_glusterd (&status_req, frame,
gf_cli3_remove_brick_status_cbk,
- (xdrproc_t) xdr_gf_cli_req, req_dict,
+ (xdrproc_t) xdr_gf_cli_req, dict,
GLUSTER_CLI_DEFRAG_VOLUME, this,
cli_rpc_prog, NULL);
}
out:
- if (req_dict)
- dict_unref (req_dict);
gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret);
GF_FREE (req.dict.dict_val);