From f63fbca7540a4c9ce090e1ed5941ed8777ff6316 Mon Sep 17 00:00:00 2001 From: Joseph Fernandes Date: Mon, 21 Apr 2014 20:28:22 +0530 Subject: [glusterd/snapshot] snapshot create force option Implement force option in snapshot create i.e 1) Creation of snapshot fails if the original volume bricks are down 2) With a force option creation of snapshot will continue even if the original volume bricks are down. This was the fix for bugs 1089527 and 1083502 Change-Id: I8de0242adf8ee0af00db9fa8701d86fabc12e7fc BUG: 1090042 Signed-off-by: Joseph Fernandes Reviewed-on: http://review.gluster.org/7520 Reviewed-by: Atin Mukherjee Reviewed-by: Krishnan Parthasarathi Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/bugs/bug-1090042.t | 30 ++++++++++++++++++++++++++++++ tests/snapshot.rc | 11 +++++++++++ 2 files changed, 41 insertions(+) create mode 100755 tests/bugs/bug-1090042.t (limited to 'tests') diff --git a/tests/bugs/bug-1090042.t b/tests/bugs/bug-1090042.t new file mode 100755 index 00000000000..364d8b2d66b --- /dev/null +++ b/tests/bugs/bug-1090042.t @@ -0,0 +1,30 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../snapshot.rc + +cleanup; + +TEST init_n_bricks 3; +TEST setup_lvm 3; +TEST glusterd; + +TEST $CLI volume create $V0 replica 3 $H0:$L1 $H0:$L2 $H0:$L3; +TEST $CLI volume start $V0; + +TEST kill_brick $V0 $H0 $L1; + +#Normal snap create should fail +TEST ! $CLI snapshot create ${V0}_snap1 $V0; +TEST ! snapshot_exists 0 ${V0}_snap1; + +#Force snap create should succeed +TEST $CLI snapshot create ${V0}_snap1 $V0 force; +TEST snapshot_exists 0 ${V0}_snap1; + +#Delete the created snap +TEST $CLI snapshot delete ${V0}_snap1; +TEST ! snapshot_exists 0 ${V0}_snap1; + +cleanup; diff --git a/tests/snapshot.rc b/tests/snapshot.rc index 87ea0df9190..37c250344f1 100755 --- a/tests/snapshot.rc +++ b/tests/snapshot.rc @@ -5,6 +5,17 @@ LVM_PREFIX="patchy_snap" LVM_COUNT=0 VHD_SIZE="1G" +#This function will init B# bricks +#This is used when launch_cluster is +#not called to init B#. Call it before +#setup_lvm +function init_n_bricks() { + local count=$1 + for i in `seq 1 $count`; do + eval "B$i=/d/backends/$i" + done +} + function init_lvm() { if [ "$1" == "" ]; then echo "Error: Invalid argument supplied" -- cgit