# Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions # of the GNU General Public License v.2. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA . ./test-utils.sh dmsetup_has_dm_devdir_support_ || exit 200 aux prepare_vg 5 lv_is_on_() { local lv=$1 #allready vg/lv shift 1 lvs -a -odevices --noheadings $lv | sed 's/,/\n/g' > out #is on all specified devs for d in $*; do grep "$d(" out; done #isn't on any other dev (we are set -e remember) for d in $*; do ! grep -v "$d(" out; done return 0 } mimages_are_on_ () { local lv=$1 shift local pvs="$*" local mimages local i echo "Check if mirror images of $lv are on PVs $pvs" rm -f out1 out2 echo $pvs | sed 's/ /\n/g' | sort | uniq > out1 mimages=$(lvs --noheadings -a -o lv_name $vg | grep "${lv}_mimage_" | \ sed 's/\[//g; s/\]//g') for i in $mimages; do echo "Checking $vg/$i" lvs -a -odevices --noheadings $vg/$i | \ sed 's/([^)]*)//g; s/ //g; s/,/ /g' | sort | uniq >> out2 done diff --ignore-blank-lines out1 out2 } # --------------------------------------------------------------------- # Common environment setup/cleanup for each sub testcases prepare_lvs_() { lvremove -ff $vg if dmsetup table|grep $vg; then echo "ERROR: lvremove did leave some some mappings in DM behind!" return 1 fi : } check_and_cleanup_lvs_() { lvs -a -o+devices $vg lvremove -ff $vg if dmsetup table|grep $vg; then echo "ERROR: lvremove did leave some some mappings in DM behind!" return 1 fi } prepare_lvs_ check_and_cleanup_lvs_ #COMM "convert from 2-way mirror to linear -- specify leg to remove (bz453643)" prepare_lvs_ lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 lvconvert -m0 $vg/$lv1 $dev2 lv_is_on_ $vg/$lv1 $dev1 check_and_cleanup_lvs_ prepare_lvs_ lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev4 $dev3:0-1 lvconvert -m-1 $vg/$lv1 $dev1 lvs -a -o+devices mimages_are_on_ $lv1 $dev2 $dev4 lvconvert -m-1 $vg/$lv1 $dev2 lvs -a -o+devices lv_is_on_ $vg/$lv1 $dev4 check_and_cleanup_lvs_