summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/glusterd/bug-1406411-fail-add-brick-on-replica-count-change.t4
-rw-r--r--tests/include.rc1
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-brick-ops.c6
3 files changed, 6 insertions, 5 deletions
diff --git a/tests/bugs/glusterd/bug-1406411-fail-add-brick-on-replica-count-change.t b/tests/bugs/glusterd/bug-1406411-fail-add-brick-on-replica-count-change.t
index bbd2d4cc948..a9dd2b7a811 100644
--- a/tests/bugs/glusterd/bug-1406411-fail-add-brick-on-replica-count-change.t
+++ b/tests/bugs/glusterd/bug-1406411-fail-add-brick-on-replica-count-change.t
@@ -16,7 +16,7 @@ EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V0 $H0 $B0/${V0}2
TEST kill_brick $V0 $H0 $B0/${V0}1
#add-brick should fail
-TEST ! $CLI volume add-brick $V0 replica 3 $H0:$B0/${V0}3
+TEST ! $CLI_NO_FORCE volume add-brick $V0 replica 3 $H0:$B0/${V0}3
TEST $CLI volume start $V0 force
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V0 $H0 $B0/${V0}1
@@ -31,7 +31,7 @@ EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V1 $H0 $B0/${V1}2
TEST kill_brick $V1 $H0 $B0/${V1}1
#add-brick should fail
-TEST ! $CLI volume add-brick $V1 replica 2 $H0:$B0/${V1}{3,4}
+TEST ! $CLI_NO_FORCE volume add-brick $V1 replica 2 $H0:$B0/${V1}{3,4}
TEST $CLI volume start $V1 force
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V1 $H0 $B0/${V1}1
diff --git a/tests/include.rc b/tests/include.rc
index e713bcd1590..b83972a111b 100644
--- a/tests/include.rc
+++ b/tests/include.rc
@@ -90,6 +90,7 @@ LOGDIR=$(gluster --print-logdir)
statedumpdir=`gluster --print-statedumpdir`; # Default directory for statedump
CLI="gluster --mode=script --wignore";
+CLI_NO_FORCE="gluster --mode-script";
GFS="glusterfs --attribute-timeout=0 --entry-timeout=0";
mkdir -p $WORKDIRS
diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
index 08a878388a3..938663ba863 100644
--- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
+++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
@@ -1724,7 +1724,9 @@ glusterd_op_stage_add_brick (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
}
}
- if (volinfo->replica_count < replica_count) {
+ is_force = dict_get_str_boolean (dict, "force", _gf_false);
+
+ if (volinfo->replica_count < replica_count && !is_force) {
cds_list_for_each_entry (brickinfo, &volinfo->bricks,
brick_list) {
if (gf_uuid_compare (brickinfo->uuid, MY_UUID))
@@ -1812,8 +1814,6 @@ glusterd_op_stage_add_brick (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
goto out;
}
- is_force = dict_get_str_boolean (dict, "force", _gf_false);
-
if (bricks) {
brick_list = gf_strdup (bricks);
all_bricks = gf_strdup (bricks);