diff options
-rw-r--r-- | tests/bugs/bug-1109770.t | 69 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 11 |
2 files changed, 79 insertions, 1 deletions
diff --git a/tests/bugs/bug-1109770.t b/tests/bugs/bug-1109770.t new file mode 100644 index 00000000000..3ee43e3e304 --- /dev/null +++ b/tests/bugs/bug-1109770.t @@ -0,0 +1,69 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../snapshot.rc +. $(dirname $0)/../fileio.rc +. $(dirname $0)/../nfs.rc + +cleanup; + +TEST init_n_bricks 3; +TEST setup_lvm 3; + +TEST glusterd; + +TEST pidof glusterd; + +TEST $CLI volume create $V0 $H0:$L1 $H0:$L2 $H0:$L3; + +TEST $CLI volume start $V0; + +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; + +for i in {1..10} ; do echo "file" > $M0/file$i ; done + +TEST $CLI snapshot create snap1 $V0; + +for i in {11..20} ; do echo "file" > $M0/file$i ; done + +TEST $CLI snapshot create snap2 $V0; + +mkdir $M0/dir1; +mkdir $M0/dir2; + +for i in {1..10} ; do echo "foo" > $M0/dir1/foo$i ; done +for i in {1..10} ; do echo "foo" > $M0/dir2/foo$i ; done + +TEST $CLI snapshot create snap3 $V0; + +for i in {11..20} ; do echo "foo" > $M0/dir1/foo$i ; done +for i in {11..20} ; do echo "foo" > $M0/dir2/foo$i ; done + +TEST $CLI snapshot create snap4 $V0; + +TEST $CLI volume set $V0 features.uss enable; + +SNAPD_PID=$(ps aux | grep snapd | grep -v grep | awk '{print $2}'); + +TEST [ $SNAPD_PID -gt 0 ]; + +TEST $CLI volume stop $V0; + +SNAPD_PID=$(ps aux | grep snapd | grep -v grep | awk '{print $2}'); + +TEST ! [ $SNAPD_PID -gt 0 ]; + +TEST $CLI volume start $V0; + +SNAPD_PID=$(ps aux | grep snapd | grep -v grep | awk '{print $2}'); + +TEST [ $SNAPD_PID -gt 0 ]; + +TEST $CLI volume stop $V0; + +SNAPD_PID=$(ps aux | grep snapd | grep -v grep | awk '{print $2}'); + +TEST ! [ $SNAPD_PID -gt 0 ]; + +cleanup ; diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index f02b6197428..66eb9408a6b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -13408,8 +13408,17 @@ glusterd_handle_snapd_option (glusterd_volinfo_t *volinfo) return 0; if (glusterd_is_snapd_enabled (volinfo)) { - if (!glusterd_is_volume_started (volinfo)) + if (!glusterd_is_volume_started (volinfo)) { + if (glusterd_is_snapd_running (volinfo)) { + ret = glusterd_snapd_stop (volinfo); + if (ret) + gf_log (this->name, GF_LOG_ERROR, + "Couldn't stop snapd for " + "volume: %s", + volinfo->volname); + } goto out; + } ret = glusterd_create_snapd_volfile (volinfo); if (ret) { |