cluster/dht: In reconfig handle removed decommissioned nodes
If no decommissioned nodes options are set in the options, then clear the conf->decommissioned_bricks. Change-Id: I426d2bcc874aab21b2eba0b16a580b9a26672ea2 Signed-off-by: shishir gowda <sgowda@redhat.com> BUG: 973073 Reviewed-on: http://review.gluster.org/5199 Reviewed-by: Amar Tumballi <amarts@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
This commit is contained in:
parent
3f72e52c93
commit
de31ac4219
48
tests/bugs/bug-973073.t
Executable file
48
tests/bugs/bug-973073.t
Executable file
@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
. $(dirname $0)/../include.rc
|
||||
. $(dirname $0)/../dht.rc
|
||||
|
||||
## Steps followed are one descibed in bugzilla
|
||||
|
||||
cleanup;
|
||||
|
||||
function get_layout()
|
||||
{
|
||||
layout1=`getfattr -n trusted.glusterfs.dht -e hex $1 2>&1`
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 1
|
||||
else
|
||||
echo 0
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
BRICK_COUNT=3
|
||||
|
||||
TEST glusterd
|
||||
TEST pidof glusterd
|
||||
|
||||
TEST $CLI volume create $V0 $H0:$B0/${V0}0 $H0:$B0/${V0}1 $H0:$B0/${V0}2
|
||||
TEST $CLI volume start $V0
|
||||
|
||||
## Mount FUSE
|
||||
TEST glusterfs -s $H0 --volfile-id $V0 $M0;
|
||||
|
||||
TEST $CLI volume remove-brick $V0 $H0:$B0/${V0}2 start
|
||||
|
||||
## remove-brick status == rebalance_status
|
||||
EXPECT_WITHIN 30 "0" rebalance_completed
|
||||
|
||||
TEST $CLI volume remove-brick $V0 $H0:$B0/${V0}2 stop
|
||||
|
||||
TEST $CLI volume rebalance $V0 fix-layout start
|
||||
|
||||
EXPECT_WITHIN 30 "0" rebalance_completed
|
||||
|
||||
TEST mkdir $M0/dir 2>/dev/null;
|
||||
|
||||
EXPECT "0" get_layout $B0/${V0}2/dir
|
||||
cleanup;
|
@ -262,6 +262,28 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
dht_decommissioned_remove (xlator_t *this, dht_conf_t *conf)
|
||||
{
|
||||
int i = 0;
|
||||
int ret = -1;
|
||||
|
||||
if (!conf)
|
||||
goto out;
|
||||
|
||||
for (i = 0; i < conf->subvolume_cnt; i++) {
|
||||
if (conf->decommissioned_bricks[i]) {
|
||||
conf->decommissioned_bricks[i] = NULL;
|
||||
conf->decommission_subvols_cnt--;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
|
||||
return ret;
|
||||
}
|
||||
void
|
||||
dht_init_regex (xlator_t *this, dict_t *odict, char *name,
|
||||
regex_t *re, gf_boolean_t *re_valid)
|
||||
@ -358,6 +380,10 @@ dht_reconfigure (xlator_t *this, dict_t *options)
|
||||
ret = dht_parse_decommissioned_bricks (this, conf, temp_str);
|
||||
if (ret == -1)
|
||||
goto out;
|
||||
} else {
|
||||
ret = dht_decommissioned_remove (this, conf);
|
||||
if (ret == -1)
|
||||
goto out;
|
||||
}
|
||||
|
||||
dht_init_regex (this, options, "rsync-hash-regex",
|
||||
|
Loading…
x
Reference in New Issue
Block a user