diff options
| author | Gaurav Kumar Garg <ggarg@redhat.com> | 2015-02-15 19:22:13 +0530 | 
|---|---|---|
| committer | Krishnan Parthasarathi <kparthas@redhat.com> | 2015-04-09 17:21:06 +0000 | 
| commit | 2788ddd3a0afa98f78128247cca89427a323b090 (patch) | |
| tree | 4568c2a808caa62cc06516e6fd3f392250e4217f /cli/src | |
| parent | e405f6e419387d160f6564d15ad9fd3a43af0d10 (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/src')
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 8 | ||||
| -rw-r--r-- | cli/src/cli-rpc-ops.c | 22 | 
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);  | 
