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# 12# Exercise various vgextend commands 13# 14 15. ./test-utils.sh 16 17aux prepare_devs 5 18 19for mdatype in 1 2 20do 21 22# Explicit pvcreate 23pvcreate -M$mdatype $dev1 $dev2 $dev3 $dev4 $dev5 24vgcreate -M$mdatype $vg1 $dev1 $dev2 25vgextend $vg1 $dev3 $dev4 $dev5 26vgremove -ff $vg1 27 28# Implicit pvcreate 29pvremove $dev1 $dev2 $dev3 $dev4 $dev5 30vgcreate -M$mdatype $vg1 $dev1 $dev2 31vgextend -M$mdatype $vg1 $dev3 $dev4 $dev5 32vgremove -ff $vg1 33pvremove $dev1 $dev2 $dev3 $dev4 $dev5 34 35done 36 37# Implicit pvcreate tests, test pvcreate options on vgcreate 38# --force, --yes, --metadata{size|copies|type}, --zero 39# --dataalignment[offset] 40vgcreate $vg $dev2 41vgextend --force --yes --zero y $vg $dev1 42vgreduce $vg $dev1 43pvremove -f $dev1 44 45for i in 0 1 2 3 46do 47# vgcreate (lvm2) succeeds writing LVM label at sector $i 48 vgextend --labelsector $i $vg $dev1 49 dd if=$dev1 bs=512 skip=$i count=1 2>/dev/null | strings | grep -q LABELONE; 50 vgreduce $vg $dev1 51 pvremove -f $dev1 52done 53 54# pvmetadatacopies 55for i in 0 1 2 56do 57 vgextend --pvmetadatacopies $i $vg $dev1 58 check_pv_field_ $dev1 pv_mda_count $i 59 vgreduce $vg $dev1 60 pvremove -f $dev1 61done 62 63# metadatasize, dataalignment, dataalignmentoffset 64#COMM 'pvcreate sets data offset next to mda area' 65vgextend --metadatasize 100k --dataalignment 100k $vg $dev1 66check_pv_field_ $dev1 pe_start 200.00k 67vgreduce $vg $dev1 68pvremove -f $dev1 69 70# data area is aligned to 64k by default, 71# data area start is shifted by the specified alignment_offset 72pv_align="195.50k" 73vgextend --metadatasize 128k --dataalignmentoffset 7s $vg $dev1 74check_pv_field_ $dev1 pe_start $pv_align 75vgremove -f $vg 76pvremove -f $dev1 77 78# vgextend fails if pv belongs to existing vg 79vgcreate $vg1 $dev1 $dev3 80vgcreate $vg2 $dev2 81not vgextend $vg2 $dev3 82vgremove -f $vg1 83vgremove -f $vg2 84pvremove -f $dev1 $dev2 $dev3 85 86#vgextend fails if vg is not resizeable 87vgcreate $vg1 $dev1 $dev2 88vgchange --resizeable n $vg1 89not vgextend $vg1 $dev3 90vgremove -f $vg1 91pvremove -f $dev1 $dev2 92 93# all PVs exist in the VG after extended 94pvcreate $dev1 95vgcreate $vg1 $dev2 96vgextend $vg1 $dev1 $dev3 97check_pv_field_ $dev1 vg_name $vg1 98check_pv_field_ $dev2 vg_name $vg1 99check_pv_field_ $dev3 vg_name $vg1 100vgremove -f $vg1 101pvremove -f $dev1 $dev2 $dev3 102