diff options
Diffstat (limited to 'cli/src')
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 8 | ||||
| -rw-r--r-- | cli/src/cli-cmd-volume.c | 24 | ||||
| -rw-r--r-- | cli/src/cli.h | 2 | 
3 files changed, 26 insertions, 8 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index 950067550be..29043e09810 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -1991,7 +1991,7 @@ out:  int32_t  cli_cmd_volume_remove_brick_parse (const char **words, int wordcount,                                     dict_t **options, int *question, -                                   int *brick_count) +                                   int *brick_count, int32_t *comm)  {          dict_t  *dict = NULL;          char    *volname = NULL; @@ -2060,10 +2060,10 @@ cli_cmd_volume_remove_brick_parse (const char **words, int wordcount,                  wordcount--;                  if (!strcmp ("start", w)) {                          command = GF_OP_CMD_START; -                } else if (!strcmp ("commit", w)) { -                        command = GF_OP_CMD_COMMIT;                          if (question)                                  *question = 1; +                } else if (!strcmp ("commit", w)) { +                        command = GF_OP_CMD_COMMIT;                  } else if (!strcmp ("stop", w)) {                          command = GF_OP_CMD_STOP;                  } else if (!strcmp ("status", w)) { @@ -2156,6 +2156,8 @@ out:          GF_FREE (tmp_brick);          GF_FREE (tmp_brick1); +        *comm = command; +          return ret;  } diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 6dade9256e4..ee7e8f94c9e 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -2023,20 +2023,37 @@ cli_cmd_volume_remove_brick_cbk (struct cli_state *state,          char                    *event_str = NULL;          int                     event_ret = -1;  #endif -        const char *question = "Removing brick(s) can result in data loss. " -                               "Do you want to Continue?"; +        int32_t                 command = GF_OP_CMD_NONE; +        char                    *question = NULL;          frame = create_frame (THIS, THIS->ctx->pool);          if (!frame)                  goto out;          ret = cli_cmd_volume_remove_brick_parse (words, wordcount, &options, -                                                 &need_question, &brick_count); +                                                 &need_question, &brick_count, +                                                 &command);          if (ret) {                  cli_usage_out (word->pattern);                  parse_error = 1;                  goto out;          } + +        if (command == GF_OP_CMD_COMMIT_FORCE) { +                question = "Remove-brick force will not migrate files from the " +                           "removed bricks, so they will no longer be available" +                           " on the volume.\nDo you want to continue?"; +        } else if (command == GF_OP_CMD_START) { +                question = "Running remove-brick with cluster.force-migration" +                           " enabled can result in data corruption. It is safer" +                           " to disable this option so that files that receive " +                           "writes during migration are not migrated.\nFiles " +                           "that are not migrated can then be manually copied " +                           "after the remove-brick commit operation.\nDo you " +                           "want to continue with your current " +                           "cluster.force-migration settings?"; +        } +          if (!brick_count) {                  cli_err ("No bricks specified");                  cli_usage_out (word->pattern); @@ -2065,7 +2082,6 @@ cli_cmd_volume_remove_brick_cbk (struct cli_state *state,          }          if (!(state->mode & GLUSTER_MODE_SCRIPT) && need_question) { -                /* we need to ask question only in case of 'commit or force' */                  answer = cli_cmd_get_confirmation (state, question);                  if (GF_ANSWER_NO == answer) {                          ret = 0; diff --git a/cli/src/cli.h b/cli/src/cli.h index 68dcb8c531f..3421d6911fb 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -279,7 +279,7 @@ cli_cmd_volume_old_tier_parse (const char **words, int wordcount,  int32_t  cli_cmd_volume_remove_brick_parse (const char **words, int wordcount,                                     dict_t **options, int *question, -                                   int *brick_count); +                                   int *brick_count, int32_t *command);  int32_t  cli_cmd_volume_replace_brick_parse (const char **words, int wordcount,  | 
