diff options
-rw-r--r-- | tests/bugs/glusterd/bug-1230121-replica_subvol_count_correct_cal.t | 52 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-brick-ops.c | 4 |
2 files changed, 54 insertions, 2 deletions
diff --git a/tests/bugs/glusterd/bug-1230121-replica_subvol_count_correct_cal.t b/tests/bugs/glusterd/bug-1230121-replica_subvol_count_correct_cal.t new file mode 100644 index 00000000000..71d98e18491 --- /dev/null +++ b/tests/bugs/glusterd/bug-1230121-replica_subvol_count_correct_cal.t @@ -0,0 +1,52 @@ +#!/bin/bash + +## Test case for BZ:1230121 glusterd crashed while trying to remove a bricks +## one selected from each replica set - after shrinking nX3 to nX2 to nX1 + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../cluster.rc + +cleanup; + +## Start a 2 node virtual cluster +TEST launch_cluster 2; +TEST pidof glusterd + +## Peer probe server 2 from server 1 cli +TEST $CLI_1 peer probe $H2; + +EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count + +## Creating a 2x3 replicate volume +TEST $CLI_1 volume create $V0 replica 3 $H1:$B1/brick1 $H2:$B2/brick2 \ + $H1:$B1/brick3 $H2:$B2/brick4 \ + $H1:$B1/brick5 $H2:$B2/brick6 + +## Start the volume +TEST $CLI_1 volume start $V0 + + +## Shrinking volume replica 2x3 to 2x2 by performing remove-brick operation. +TEST $CLI_1 volume remove-brick $V0 replica 2 $H1:$B1/brick1 $H2:$B2/brick6 force + +## Shrinking volume replica 2x2 to 1x2 by performing remove-brick operation +TEST $CLI_1 volume remove-brick $V0 replica 2 $H1:$B1/brick3 $H2:$B2/brick2 force + +## Shrinking volume replica from 1x2 to 1x1 by performing remove-brick operation +TEST $CLI_1 volume remove-brick $V0 replica 1 $H1:$B1/brick5 force + + + +### Expanding volume replica by performing add-brick operation. + +## Expend volume replica from 1x1 to 1x2 by performing add-brick operation +TEST $CLI_1 volume add-brick $V0 replica 2 $H1:$B1/brick5 force + +## Expend volume replica from 1x2 to 2x2 by performing add-brick operation +TEST $CLI_1 volume add-brick $V0 replica 2 $H1:$B1/brick3 $H2:$B2/brick2 force + +## Expend volume replica from 2x2 to 2x3 by performing add-brick operation +TEST $CLI_1 volume add-brick $V0 replica 3 $H1:$B1/brick1 $H2:$B2/brick6 force + +cleanup; diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index 8fff9ab2cdf..06a735758d4 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -2246,8 +2246,6 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr) if (start_remove) volinfo->rebal.dict = dict_ref (bricks_dict); - volinfo->subvol_count = (volinfo->brick_count / - volinfo->dist_leaf_count); ret = dict_get_int32 (dict, "replica-count", &replica_count); if (!ret) { gf_log (this->name, GF_LOG_INFO, @@ -2276,6 +2274,8 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr) } } } + volinfo->subvol_count = (volinfo->brick_count / + volinfo->dist_leaf_count); ret = glusterd_create_volfiles_and_notify_services (volinfo); if (ret) { |