19
19
#COMM 'pvcreate rejects negative setphysicalvolumesize'
20
not pvcreate --setphysicalvolumesize -1024 $dev1
20
not pvcreate --setphysicalvolumesize -1024 "$dev1"
22
22
#COMM 'pvcreate rejects negative metadatasize'
23
not pvcreate --metadatasize -1024 $dev1
23
not pvcreate --metadatasize -1024 "$dev1"
25
25
# x. metadatasize 0, defaults to 255
26
26
# FIXME: unable to check default value, not in reporting cmds
27
27
# should default to 255 according to code
28
28
# check pv_field pv_mda_size 255
29
29
#COMM 'pvcreate accepts metadatasize 0'
30
pvcreate --metadatasize 0 $dev1
30
pvcreate --metadatasize 0 "$dev1"
33
33
#Verify vg_mda_size is smaller pv_mda_size
34
pvcreate --metadatasize 512k $dev1
35
pvcreate --metadatasize 96k $dev2
36
vgcreate $vg $dev1 $dev2
37
check compare_fields vgs $vg vg_mda_size pvs $dev2 pv_mda_size
34
pvcreate --metadatasize 512k "$dev1"
35
pvcreate --metadatasize 96k "$dev2"
36
vgcreate $vg "$dev1" "$dev2"
37
check compare_fields vgs $vg vg_mda_size pvs "$dev2" pv_mda_size
40
40
# x. metadatasize too large
41
41
# For some reason we allow this, even though there's no room for data?
42
42
##COMM 'pvcreate rejects metadatasize too large'
43
#not pvcreate --metadatasize 100000000000000 $dev1
43
#not pvcreate --metadatasize 100000000000000 "$dev1"
45
45
#COMM 'pvcreate rejects metadatacopies < 0'
46
not pvcreate --metadatacopies -1 $dev1
46
not pvcreate --metadatacopies -1 "$dev1"
48
48
#COMM 'pvcreate accepts metadatacopies = 0, 1, 2'
49
49
for j in metadatacopies pvmetadatacopies
54
check pv_field $dev1 pv_mda_count 0
55
check pv_field $dev2 pv_mda_count 1
56
check pv_field $dev3 pv_mda_count 2
51
pvcreate --$j 0 "$dev1"
52
pvcreate --$j 1 "$dev2"
53
pvcreate --$j 2 "$dev3"
54
check pv_field "$dev1" pv_mda_count 0
55
check pv_field "$dev2" pv_mda_count 1
56
check pv_field "$dev3" pv_mda_count 2
57
pvremove "$dev1" "$dev2" "$dev3"
62
60
#COMM 'pvcreate rejects metadatacopies > 2'
63
not pvcreate --metadatacopies 3 $dev1
61
not pvcreate --metadatacopies 3 "$dev1"
65
63
#COMM 'pvcreate rejects invalid device'
66
not pvcreate $dev1bogus
64
not pvcreate "$dev1"bogus
68
66
#COMM 'pvcreate rejects labelsector < 0'
69
not pvcreate --labelsector -1 $dev1
67
not pvcreate --labelsector -1 "$dev1"
71
69
#COMM 'pvcreate rejects labelsector > 1000000000000'
72
not pvcreate --labelsector 1000000000000 $dev1
70
not pvcreate --labelsector 1000000000000 "$dev1"
74
72
# other possibilites based on code inspection (not sure how hard)
75
73
# x. device too small (min of 512 * 1024 KB)
82
80
# x. set size to value inconsistent with device / PE size
84
82
#COMM 'pvcreate basic dataalignment sanity checks'
85
not pvcreate --dataalignment -1 $dev1
86
not pvcreate -M 1 --dataalignment 1 $dev1
87
not pvcreate --dataalignment 1e $dev1
83
not pvcreate --dataalignment -1 "$dev1"
84
not pvcreate -M 1 --dataalignment 1 "$dev1"
85
not pvcreate --dataalignment 1e "$dev1"
89
87
#COMM 'pvcreate always rounded up to page size for start of device'
90
#pvcreate --metadatacopies 0 --dataalignment 1 $dev1
88
#pvcreate --metadatacopies 0 --dataalignment 1 "$dev1"
91
89
# amuse shell experts
92
#check pv_field $dev1 pe_start $(($(getconf PAGESIZE)/1024))".00k"
90
#check pv_field "$dev1" pe_start $(($(getconf PAGESIZE)/1024))".00k"
94
92
#COMM 'pvcreate sets data offset directly'
95
pvcreate --dataalignment 512k $dev1
96
check pv_field $dev1 pe_start 512.00k
93
pvcreate --dataalignment 512k "$dev1"
94
check pv_field "$dev1" pe_start "512.00k"
98
96
#COMM 'vgcreate/vgremove do not modify data offset of existing PV'
99
vgcreate $vg $dev1 --config 'devices { data_alignment = 1024 }'
100
check pv_field $dev1 pe_start 512.00k
97
vgcreate $vg "$dev1" --config 'devices { data_alignment = 1024 }'
98
check pv_field "$dev1" pe_start "512.00k"
101
99
vgremove $vg --config 'devices { data_alignment = 1024 }'
102
check pv_field $dev1 pe_start 512.00k
100
check pv_field "$dev1" pe_start "512.00k"
104
102
#COMM 'pvcreate sets data offset next to mda area'
105
pvcreate --metadatasize 100k --dataalignment 100k $dev1
106
check pv_field $dev1 pe_start 200.00k
103
pvcreate --metadatasize 100k --dataalignment 100k "$dev1"
104
check pv_field "$dev1" pe_start "200.00k"
108
106
# metadata area start is aligned according to pagesize
109
if [ $PAGESIZE -eq 65536 ] ; then
111
elif [ $PAGESIZE -eq 8192 ] ; then
117
pvcreate --metadatasize 128k --dataalignment 3.5k $dev1
118
check pv_field $dev1 pe_start $pv_align
120
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignment 3.5k $dev1
121
check pv_field $dev1 pe_start $pv_align
108
65536) pv_align="192.50k" ;;
109
8192) pv_align="136.50k" ;;
110
*) pv_align="133.00k" ;;
113
pvcreate --metadatasize 128k --dataalignment 3.5k "$dev1"
114
check pv_field "$dev1" pe_start $pv_align
116
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignment 3.5k "$dev1"
117
check pv_field "$dev1" pe_start $pv_align
123
119
# data area is aligned to 1M by default,
124
120
# data area start is shifted by the specified alignment_offset
125
pv_align="1052160B" # 1048576 + (7*512)
126
pvcreate --metadatasize 128k --dataalignmentoffset 7s $dev1
127
check pv_field $dev1 pe_start $pv_align "--units b"
121
pv_align=1052160B # 1048576 + (7*512)
122
pvcreate --metadatasize 128k --dataalignmentoffset 7s "$dev1"
123
check pv_field "$dev1" pe_start $pv_align --units b
129
125
# 2nd metadata area is created without problems when
130
126
# data area start is shifted by the specified alignment_offset
131
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignmentoffset 7s $dev1
132
check pv_field $dev1 pv_mda_count 2
127
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignmentoffset 7s "$dev1"
128
check pv_field "$dev1" pv_mda_count 2
133
129
# FIXME: compare start of 2nd mda with and without --dataalignmentoffset
135
131
#COMM 'pv with LVM1 compatible data alignment can be convereted'
136
132
#compatible == LVM1_PE_ALIGN == 64k
137
pvcreate --dataalignment 256k $dev1
138
vgcreate -s 1m $vg $dev1
133
pvcreate --dataalignment 256k "$dev1"
134
vgcreate -s 1m $vg "$dev1"
139
135
vgconvert -M1 $vg
140
136
vgconvert -M2 $vg
141
check pv_field $dev1 pe_start 256.00k
137
check pv_field "$dev1" pe_start 256.00k
144
140
#COMM 'pv with LVM1 incompatible data alignment cannot be convereted'
145
pvcreate --dataalignment 10k $dev1
146
vgcreate -s 1m $vg $dev1
141
pvcreate --dataalignment 10k "$dev1"
142
vgcreate -s 1m $vg "$dev1"
147
143
not vgconvert -M1 $vg
150
146
#COMM 'vgcfgrestore allows pe_start=0'
151
147
#basically it produces nonsense, but it tests vgcfgrestore,
152
148
#not that final cfg is usable...
153
pvcreate --metadatacopies 0 $dev1
155
vgcreate $vg $dev1 $dev2
156
vgcfgbackup -f "$(pwd)/backup.$$" $vg
157
sed 's/pe_start = [0-9]*/pe_start = 0/' "$(pwd)/backup.$$" > "$(pwd)/backup.$$1"
158
vgcfgrestore -f "$(pwd)/backup.$$1" $vg
159
check pv_field $dev1 pe_start 0
160
check pv_field $dev2 pe_start 0
149
pvcreate --metadatacopies 0 "$dev1"
151
vgcreate $vg "$dev1" "$dev2"
152
vgcfgbackup -f backup.$$ $vg
153
sed 's/pe_start = [0-9]*/pe_start = 0/' backup.$$ > backup.$$1
154
vgcfgrestore -f backup.$$1 $vg
155
check pv_field "$dev1" pe_start "0"
156
check pv_field "$dev2" pe_start "0"
163
echo test pvcreate --metadataignore
159
echo "test pvcreate --metadataignore"
164
160
for pv_in_vg in 1 0; do
165
161
for mdacp in 1 2; do
166
162
for ignore in y n; do
167
echo pvcreate --metadataignore has proper mda_count and mda_used_count
168
pvcreate --metadatacopies $mdacp --metadataignore $ignore $dev1 $dev2
169
check pv_field $dev1 pv_mda_count $mdacp
170
check pv_field $dev2 pv_mda_count $mdacp
163
echo "pvcreate --metadataignore has proper mda_count and mda_used_count"
164
pvcreate --metadatacopies $mdacp --metadataignore $ignore "$dev1" "$dev2"
165
check pv_field "$dev1" pv_mda_count "$mdacp"
166
check pv_field "$dev2" pv_mda_count "$mdacp"
171
167
if [ $ignore = y ]; then
172
check pv_field $dev1 pv_mda_used_count 0
173
check pv_field $dev2 pv_mda_used_count 0
168
check pv_field "$dev1" pv_mda_used_count "0"
169
check pv_field "$dev2" pv_mda_used_count "0"
175
check pv_field $dev1 pv_mda_used_count $mdacp
176
check pv_field $dev2 pv_mda_used_count $mdacp
171
check pv_field "$dev1" pv_mda_used_count "$mdacp"
172
check pv_field "$dev2" pv_mda_used_count "$mdacp"
178
echo vgcreate has proper vg_mda_count and vg_mda_used_count
174
echo "vgcreate has proper vg_mda_count and vg_mda_used_count"
179
175
if [ $pv_in_vg = 1 ]; then
180
vgcreate -c n "$vg" $dev1 $dev2
181
check vg_field $vg vg_mda_count $(($mdacp * 2))
176
vgcreate -c n $vg "$dev1" "$dev2"
177
check vg_field $vg vg_mda_count "$(($mdacp * 2))"
182
178
if [ $ignore = y ]; then
183
check vg_field $vg vg_mda_used_count 1
179
check vg_field $vg vg_mda_used_count "1"
185
check vg_field $vg vg_mda_used_count $(($mdacp * 2))
181
check vg_field $vg vg_mda_used_count "$(($mdacp * 2))"
187
check vg_field $vg vg_mda_copies unmanaged
183
check vg_field $vg vg_mda_copies "unmanaged"