From 84f359537317a291e369b689083808a2e52379dd Mon Sep 17 00:00:00 2001 From: Pranith Kumar K Date: Mon, 6 Sep 2010 08:05:21 +0000 Subject: cli: stripe/replica count should be greater than 1 Signed-off-by: Pranith Kumar K Signed-off-by: Vijay Bellur BUG: 1534 () URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1534 --- cli/src/cli-cmd-parser.c | 44 +++++++++++++++++++++----------------------- cli/src/cli-cmd-volume.c | 6 ------ 2 files changed, 21 insertions(+), 29 deletions(-) (limited to 'cli') diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index ef877f6cc..ab06cb009 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -111,18 +111,14 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options goto out; } count = strtol (words[4], NULL, 0); - if (!count) { - /* Wrong number of replica count */ + if (!count || (count < 2)) { + cli_out ("replica count should be greater than 1"); ret = -1; goto out; } ret = dict_set_int32 (dict, "replica-count", count); if (ret) goto out; - if (count < 2) { - ret = -1; - goto out; - } brick_index = 5; } else if ((strcasecmp (words[3], "stripe")) == 0) { type = GF_CLUSTER_TYPE_STRIPE; @@ -131,18 +127,14 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options goto out; } count = strtol (words[4], NULL, 0); - if (!count) { - /* Wrong number of stripe count */ + if (!count || (count < 2)) { + cli_out ("stripe count should be greater than 1"); ret = -1; goto out; } ret = dict_set_int32 (dict, "stripe-count", count); if (ret) goto out; - if (count < 2) { - ret = -1; - goto out; - } brick_index = 5; } else { type = GF_CLUSTER_TYPE_NONE; @@ -183,8 +175,8 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options delimiter = strchr (words[brick_index], ':'); if (!delimiter || delimiter == words[brick_index] || *(delimiter+1) != '/') { - gf_log ("cli", GF_LOG_ERROR, - "wrong brick type, use :"); + cli_out ("wrong brick type: %s, use :" + "", words[brick_index]); ret = -1; goto out; } @@ -204,7 +196,7 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options goto out; } freeptr = host_name; - + strtok_r(host_name, ":", &tmp); if (!(strcmp(host_name, "localhost") && strcmp (host_name, "127.0.0.1"))) { @@ -218,7 +210,7 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options tmp_list = strdup(brick_list+1); j = 0; while(( brick_count != 0) && (j < brick_count)) { - strtok_r (tmp_list, " ", &tmpptr); + strtok_r (tmp_list, " ", &tmpptr); if (!(strcmp (tmp_list, words[brick_index]))) { ret = -1; cli_out ("Found duplicate" @@ -252,6 +244,12 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options } if (brick_count % count) { + if (type == GF_CLUSTER_TYPE_STRIPE) + cli_out ("number of bricks is not a multiple of " + "stripe count"); + else if (type == GF_CLUSTER_TYPE_REPLICATE) + cli_out ("number of bricks is not a multiple of " + "replica count"); ret = -1; goto out; } @@ -435,8 +433,8 @@ cli_cmd_volume_add_brick_parse (const char **words, int wordcount, delimiter = strchr (words[brick_index], ':'); if (!delimiter || delimiter == words[brick_index] || *(delimiter+1) != '/') { - gf_log ("cli", GF_LOG_ERROR, - "wrong brick type, use :"); + cli_out ("wrong brick type: %s, use :" + "", words[brick_index]); ret = -1; goto out; } @@ -619,8 +617,8 @@ cli_cmd_volume_remove_brick_parse (const char **words, int wordcount, delimiter = strchr(words[brick_index], ':'); if (!delimiter || delimiter == words[brick_index] || *(delimiter+1) != '/') { - gf_log ("cli", GF_LOG_ERROR, - "wrong brick type, use :"); + cli_out ("wrong brick type: %s, use :" + "", words[brick_index]); ret = -1; goto out; } @@ -628,7 +626,7 @@ cli_cmd_volume_remove_brick_parse (const char **words, int wordcount, strcpy(tmp_brick, words[brick_index]); while ( j < brick_index) { strcpy(tmp_brick1, words[j]); - if (!(strcmp (tmp_brick, tmp_brick1))) { + if (!(strcmp (tmp_brick, tmp_brick1))) { gf_log("",GF_LOG_ERROR, "Duplicate bricks" " found %s", words[brick_index]); cli_out("Duplicate bricks found %s", @@ -724,8 +722,8 @@ cli_cmd_volume_replace_brick_parse (const char **words, int wordcount, delimiter = strchr ((char *)words[4], ':'); if (!delimiter || delimiter == words[4] || *(delimiter+1) != '/') { - gf_log ("cli", GF_LOG_ERROR, - "wrong brick type, use :"); + cli_out ("wrong brick type: %s, use " + ":", words[4]); ret = -1; goto out; } diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index fdd58c69a..cbc249ba0 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -161,12 +161,6 @@ cli_cmd_volume_create_cbk (struct cli_state *state, struct cli_cmd_word *word, } out: - if (ret) { - if (wordcount > 2) { - char *volname = (char *) words[2]; - cli_out ("Creating Volume %s failed",volname ); - } - } if (options) dict_unref (options); -- cgit