1*7c604eeaShaad# Copyright (C) 2008 Red Hat, Inc. All rights reserved. 2*7c604eeaShaad# 3*7c604eeaShaad# This copyrighted material is made available to anyone wishing to use, 4*7c604eeaShaad# modify, copy, or redistribute it subject to the terms and conditions 5*7c604eeaShaad# of the GNU General Public License v.2. 6*7c604eeaShaad# 7*7c604eeaShaad# You should have received a copy of the GNU General Public License 8*7c604eeaShaad# along with this program; if not, write to the Free Software Foundation, 9*7c604eeaShaad# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 10*7c604eeaShaad 11*7c604eeaShaad# 12*7c604eeaShaad# Exercise various vgextend commands 13*7c604eeaShaad# 14*7c604eeaShaad 15*7c604eeaShaad. ./test-utils.sh 16*7c604eeaShaad 17*7c604eeaShaadaux prepare_devs 5 18*7c604eeaShaad 19*7c604eeaShaadfor mdatype in 1 2 20*7c604eeaShaaddo 21*7c604eeaShaad 22*7c604eeaShaad# Explicit pvcreate 23*7c604eeaShaadpvcreate -M$mdatype $dev1 $dev2 $dev3 $dev4 $dev5 24*7c604eeaShaadvgcreate -M$mdatype $vg1 $dev1 $dev2 25*7c604eeaShaadvgextend $vg1 $dev3 $dev4 $dev5 26*7c604eeaShaadvgremove -ff $vg1 27*7c604eeaShaad 28*7c604eeaShaad# Implicit pvcreate 29*7c604eeaShaadpvremove $dev1 $dev2 $dev3 $dev4 $dev5 30*7c604eeaShaadvgcreate -M$mdatype $vg1 $dev1 $dev2 31*7c604eeaShaadvgextend -M$mdatype $vg1 $dev3 $dev4 $dev5 32*7c604eeaShaadvgremove -ff $vg1 33*7c604eeaShaadpvremove $dev1 $dev2 $dev3 $dev4 $dev5 34*7c604eeaShaad 35*7c604eeaShaaddone 36*7c604eeaShaad 37*7c604eeaShaad# Implicit pvcreate tests, test pvcreate options on vgcreate 38*7c604eeaShaad# --force, --yes, --metadata{size|copies|type}, --zero 39*7c604eeaShaad# --dataalignment[offset] 40*7c604eeaShaadvgcreate $vg $dev2 41*7c604eeaShaadvgextend --force --yes --zero y $vg $dev1 42*7c604eeaShaadvgreduce $vg $dev1 43*7c604eeaShaadpvremove -f $dev1 44*7c604eeaShaad 45*7c604eeaShaadfor i in 0 1 2 3 46*7c604eeaShaaddo 47*7c604eeaShaad# vgcreate (lvm2) succeeds writing LVM label at sector $i 48*7c604eeaShaad vgextend --labelsector $i $vg $dev1 49*7c604eeaShaad dd if=$dev1 bs=512 skip=$i count=1 2>/dev/null | strings | grep -q LABELONE; 50*7c604eeaShaad vgreduce $vg $dev1 51*7c604eeaShaad pvremove -f $dev1 52*7c604eeaShaaddone 53*7c604eeaShaad 54*7c604eeaShaad# pvmetadatacopies 55*7c604eeaShaadfor i in 0 1 2 56*7c604eeaShaaddo 57*7c604eeaShaad vgextend --pvmetadatacopies $i $vg $dev1 58*7c604eeaShaad check_pv_field_ $dev1 pv_mda_count $i 59*7c604eeaShaad vgreduce $vg $dev1 60*7c604eeaShaad pvremove -f $dev1 61*7c604eeaShaaddone 62*7c604eeaShaad 63*7c604eeaShaad# metadatasize, dataalignment, dataalignmentoffset 64*7c604eeaShaad#COMM 'pvcreate sets data offset next to mda area' 65*7c604eeaShaadvgextend --metadatasize 100k --dataalignment 100k $vg $dev1 66*7c604eeaShaadcheck_pv_field_ $dev1 pe_start 200.00k 67*7c604eeaShaadvgreduce $vg $dev1 68*7c604eeaShaadpvremove -f $dev1 69*7c604eeaShaad 70*7c604eeaShaad# data area is aligned to 64k by default, 71*7c604eeaShaad# data area start is shifted by the specified alignment_offset 72*7c604eeaShaadpv_align="195.50k" 73*7c604eeaShaadvgextend --metadatasize 128k --dataalignmentoffset 7s $vg $dev1 74*7c604eeaShaadcheck_pv_field_ $dev1 pe_start $pv_align 75*7c604eeaShaadvgremove -f $vg 76*7c604eeaShaadpvremove -f $dev1 77*7c604eeaShaad 78*7c604eeaShaad# vgextend fails if pv belongs to existing vg 79*7c604eeaShaadvgcreate $vg1 $dev1 $dev3 80*7c604eeaShaadvgcreate $vg2 $dev2 81*7c604eeaShaadnot vgextend $vg2 $dev3 82*7c604eeaShaadvgremove -f $vg1 83*7c604eeaShaadvgremove -f $vg2 84*7c604eeaShaadpvremove -f $dev1 $dev2 $dev3 85*7c604eeaShaad 86*7c604eeaShaad#vgextend fails if vg is not resizeable 87*7c604eeaShaadvgcreate $vg1 $dev1 $dev2 88*7c604eeaShaadvgchange --resizeable n $vg1 89*7c604eeaShaadnot vgextend $vg1 $dev3 90*7c604eeaShaadvgremove -f $vg1 91*7c604eeaShaadpvremove -f $dev1 $dev2 92*7c604eeaShaad 93*7c604eeaShaad# all PVs exist in the VG after extended 94*7c604eeaShaadpvcreate $dev1 95*7c604eeaShaadvgcreate $vg1 $dev2 96*7c604eeaShaadvgextend $vg1 $dev1 $dev3 97*7c604eeaShaadcheck_pv_field_ $dev1 vg_name $vg1 98*7c604eeaShaadcheck_pv_field_ $dev2 vg_name $vg1 99*7c604eeaShaadcheck_pv_field_ $dev3 vg_name $vg1 100*7c604eeaShaadvgremove -f $vg1 101*7c604eeaShaadpvremove -f $dev1 $dev2 $dev3 102