xref: /netbsd-src/external/gpl2/lvm2/dist/test/t-vgextend-usage.sh (revision 7c604eea85b4f330dc75ffe65e947f4d73758aa0)
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