1# Copyright (C) 2008 Red Hat, Inc. All rights reserved. 2# 3# This copyrighted material is made available to anyone wishing to use, 4# modify, copy, or redistribute it subject to the terms and conditions 5# of the GNU General Public License v.2. 6# 7# You should have received a copy of the GNU General Public License 8# along with this program; if not, write to the Free Software Foundation, 9# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 10 11. ./test-utils.sh 12 13dmsetup_has_dm_devdir_support_ || exit 200 14 15aux prepare_vg 5 16 17 18lv_is_on_() { 19 local lv=$1 #allready vg/lv 20 shift 1 21 lvs -a -odevices --noheadings $lv | sed 's/,/\n/g' > out 22 #is on all specified devs 23 for d in $*; do grep "$d(" out; done 24 #isn't on any other dev (we are set -e remember) 25 for d in $*; do ! grep -v "$d(" out; done 26 return 0 27} 28 29mimages_are_on_ () 30{ 31 local lv=$1 32 shift 33 local pvs="$*" 34 local mimages 35 local i 36 37 echo "Check if mirror images of $lv are on PVs $pvs" 38 rm -f out1 out2 39 echo $pvs | sed 's/ /\n/g' | sort | uniq > out1 40 41 mimages=$(lvs --noheadings -a -o lv_name $vg | grep "${lv}_mimage_" | \ 42 sed 's/\[//g; s/\]//g') 43 for i in $mimages; do 44 echo "Checking $vg/$i" 45 lvs -a -odevices --noheadings $vg/$i | \ 46 sed 's/([^)]*)//g; s/ //g; s/,/ /g' | sort | uniq >> out2 47 done 48 49 diff --ignore-blank-lines out1 out2 50} 51 52# --------------------------------------------------------------------- 53# Common environment setup/cleanup for each sub testcases 54 55prepare_lvs_() 56{ 57 lvremove -ff $vg 58 if dmsetup table|grep $vg; then 59 echo "ERROR: lvremove did leave some some mappings in DM behind!" 60 return 1 61 fi 62 : 63} 64 65check_and_cleanup_lvs_() 66{ 67 lvs -a -o+devices $vg 68 lvremove -ff $vg 69 if dmsetup table|grep $vg; then 70 echo "ERROR: lvremove did leave some some mappings in DM behind!" 71 return 1 72 fi 73} 74 75prepare_lvs_ 76check_and_cleanup_lvs_ 77 78 79#COMM "convert from 2-way mirror to linear -- specify leg to remove (bz453643)" 80prepare_lvs_ 81lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 82lvconvert -m0 $vg/$lv1 $dev2 83lv_is_on_ $vg/$lv1 $dev1 84check_and_cleanup_lvs_ 85 86prepare_lvs_ 87lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev4 $dev3:0-1 88lvconvert -m-1 $vg/$lv1 $dev1 89lvs -a -o+devices 90mimages_are_on_ $lv1 $dev2 $dev4 91lvconvert -m-1 $vg/$lv1 $dev2 92lvs -a -o+devices 93lv_is_on_ $vg/$lv1 $dev4 94check_and_cleanup_lvs_ 95 96