186d7f5d3SJohn Marino# Copyright (C) 2008 Red Hat, Inc. All rights reserved. 286d7f5d3SJohn Marino# 386d7f5d3SJohn Marino# This copyrighted material is made available to anyone wishing to use, 486d7f5d3SJohn Marino# modify, copy, or redistribute it subject to the terms and conditions 586d7f5d3SJohn Marino# of the GNU General Public License v.2. 686d7f5d3SJohn Marino# 786d7f5d3SJohn Marino# You should have received a copy of the GNU General Public License 886d7f5d3SJohn Marino# along with this program; if not, write to the Free Software Foundation, 986d7f5d3SJohn Marino# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 1086d7f5d3SJohn Marino 1186d7f5d3SJohn Marino. ./test-utils.sh 1286d7f5d3SJohn Marino 1386d7f5d3SJohn Marinodmsetup_has_dm_devdir_support_ || exit 200 1486d7f5d3SJohn Marino 1586d7f5d3SJohn Marinoaux prepare_vg 5 1686d7f5d3SJohn Marino 1786d7f5d3SJohn Marino 1886d7f5d3SJohn Marinolv_is_on_() { 1986d7f5d3SJohn Marino local lv=$1 #allready vg/lv 2086d7f5d3SJohn Marino shift 1 2186d7f5d3SJohn Marino lvs -a -odevices --noheadings $lv | sed 's/,/\n/g' > out 2286d7f5d3SJohn Marino #is on all specified devs 2386d7f5d3SJohn Marino for d in $*; do grep "$d(" out; done 2486d7f5d3SJohn Marino #isn't on any other dev (we are set -e remember) 2586d7f5d3SJohn Marino for d in $*; do ! grep -v "$d(" out; done 2686d7f5d3SJohn Marino return 0 2786d7f5d3SJohn Marino} 2886d7f5d3SJohn Marino 2986d7f5d3SJohn Marinomimages_are_on_ () 3086d7f5d3SJohn Marino{ 3186d7f5d3SJohn Marino local lv=$1 3286d7f5d3SJohn Marino shift 3386d7f5d3SJohn Marino local pvs="$*" 3486d7f5d3SJohn Marino local mimages 3586d7f5d3SJohn Marino local i 3686d7f5d3SJohn Marino 3786d7f5d3SJohn Marino echo "Check if mirror images of $lv are on PVs $pvs" 3886d7f5d3SJohn Marino rm -f out1 out2 3986d7f5d3SJohn Marino echo $pvs | sed 's/ /\n/g' | sort | uniq > out1 4086d7f5d3SJohn Marino 4186d7f5d3SJohn Marino mimages=$(lvs --noheadings -a -o lv_name $vg | grep "${lv}_mimage_" | \ 4286d7f5d3SJohn Marino sed 's/\[//g; s/\]//g') 4386d7f5d3SJohn Marino for i in $mimages; do 4486d7f5d3SJohn Marino echo "Checking $vg/$i" 4586d7f5d3SJohn Marino lvs -a -odevices --noheadings $vg/$i | \ 4686d7f5d3SJohn Marino sed 's/([^)]*)//g; s/ //g; s/,/ /g' | sort | uniq >> out2 4786d7f5d3SJohn Marino done 4886d7f5d3SJohn Marino 4986d7f5d3SJohn Marino diff --ignore-blank-lines out1 out2 5086d7f5d3SJohn Marino} 5186d7f5d3SJohn Marino 5286d7f5d3SJohn Marino# --------------------------------------------------------------------- 5386d7f5d3SJohn Marino# Common environment setup/cleanup for each sub testcases 5486d7f5d3SJohn Marino 5586d7f5d3SJohn Marinoprepare_lvs_() 5686d7f5d3SJohn Marino{ 5786d7f5d3SJohn Marino lvremove -ff $vg 5886d7f5d3SJohn Marino if dmsetup table|grep $vg; then 5986d7f5d3SJohn Marino echo "ERROR: lvremove did leave some some mappings in DM behind!" 6086d7f5d3SJohn Marino return 1 6186d7f5d3SJohn Marino fi 6286d7f5d3SJohn Marino : 6386d7f5d3SJohn Marino} 6486d7f5d3SJohn Marino 6586d7f5d3SJohn Marinocheck_and_cleanup_lvs_() 6686d7f5d3SJohn Marino{ 6786d7f5d3SJohn Marino lvs -a -o+devices $vg 6886d7f5d3SJohn Marino lvremove -ff $vg 6986d7f5d3SJohn Marino if dmsetup table|grep $vg; then 7086d7f5d3SJohn Marino echo "ERROR: lvremove did leave some some mappings in DM behind!" 7186d7f5d3SJohn Marino return 1 7286d7f5d3SJohn Marino fi 7386d7f5d3SJohn Marino} 7486d7f5d3SJohn Marino 7586d7f5d3SJohn Marinoprepare_lvs_ 7686d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 7786d7f5d3SJohn Marino 7886d7f5d3SJohn Marino 7986d7f5d3SJohn Marino#COMM "convert from 2-way mirror to linear -- specify leg to remove (bz453643)" 8086d7f5d3SJohn Marinoprepare_lvs_ 8186d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 8286d7f5d3SJohn Marinolvconvert -m0 $vg/$lv1 $dev2 8386d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 8486d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 8586d7f5d3SJohn Marino 8686d7f5d3SJohn Marinoprepare_lvs_ 8786d7f5d3SJohn Marinolvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev4 $dev3:0-1 8886d7f5d3SJohn Marinolvconvert -m-1 $vg/$lv1 $dev1 8986d7f5d3SJohn Marinolvs -a -o+devices 9086d7f5d3SJohn Marinomimages_are_on_ $lv1 $dev2 $dev4 9186d7f5d3SJohn Marinolvconvert -m-1 $vg/$lv1 $dev2 9286d7f5d3SJohn Marinolvs -a -o+devices 9386d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev4 9486d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 9586d7f5d3SJohn Marino 96