From f3982cf5bf3250ee29da3ea4477591c298780043 Mon Sep 17 00:00:00 2001 From: Sunil Kumar Acharya Date: Mon, 17 Dec 2018 16:37:21 +0530 Subject: [PATCH 485/493] cluster/ec : Prevent volume create without redundant brick Problem: EC volumes can be created without any redundant brick. Solution: Updated the conditional check to avoid volume create without redundant brick. >fixes: bz#1642448 >Change-Id: I0cb334b1b9378d67fcb8abf793dbe312c3179c0b >Signed-off-by: Sunil Kumar Acharya Upstream Patch: https://review.gluster.org/#/c/glusterfs/+/21478/ BUG: 1597252 Change-Id: I0cb334b1b9378d67fcb8abf793dbe312c3179c0b Signed-off-by: Sunil Kumar Acharya Reviewed-on: https://code.engineering.redhat.com/gerrit/158910 Tested-by: RHGS Build Bot --- cli/src/cli-cmd-parser.c | 6 +++--- tests/basic/glusterd/disperse-create.t | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index 3745fb4..e790d79 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -275,9 +275,9 @@ cli_cmd_create_disperse_check (struct cli_state *state, int *disperse, tmp = *disperse - *redundancy; } - if (*redundancy > (*disperse - 1) / 2) { - cli_err ("redundancy must be less than %d for a " - "disperse %d volume", + if ((*redundancy < 1) || (*redundancy > (*disperse - 1) / 2)) { + cli_err ("redundancy must be greater than or equal to 1 and" + " less than %d for a disperse %d volume", (*disperse + 1) / 2, *disperse); return -1; diff --git a/tests/basic/glusterd/disperse-create.t b/tests/basic/glusterd/disperse-create.t index e5ce74c..5b3ed13 100644 --- a/tests/basic/glusterd/disperse-create.t +++ b/tests/basic/glusterd/disperse-create.t @@ -48,6 +48,7 @@ TEST ! $CLI volume create $V0 redundancy 1 redundancy 1 $H0:$B0/b20 $H0:$B0/b21 #Minimum counts test TEST ! $CLI volume create $V0 disperse 2 $H0:$B0/b20 $H0:$B0/b22 TEST ! $CLI volume create $V0 disperse-data 1 redundancy 0 $H0:$B0/b20 $H0:$B0/b22 +TEST ! $CLI volume create $V0 disperse 4 disperse-data 4 $H0:$B0/b20 $H0:$B0/b21 $H0:$B0/b23 $H0:$B0/b24 TEST ! $CLI volume create $V0 redundancy 0 $H0:$B0/b20 $H0:$B0/b22 #Wrong count n != k+m -- 1.8.3.1