15
16
echo Make sure we can ignore / un-ignore mdas on a per-PV basis
16
17
for pv_in_vg in 1 0; do
17
18
for mdacp in 1 2; do
18
pvcreate --metadatacopies $mdacp $dev1 $dev2
19
pvcreate --metadatacopies 0 $dev3
19
pvcreate --metadatacopies $mdacp "$dev1" "$dev2"
20
pvcreate --metadatacopies 0 "$dev3"
20
21
if [ $pv_in_vg = 1 ]; then
21
vgcreate -c n "$vg" $dev1 $dev2 $dev3
22
vgcreate -c n $vg "$dev1" "$dev2" "$dev3"
23
pvchange --metadataignore y $dev1
24
check pv_field $dev1 pv_mda_count $mdacp
25
check pv_field $dev1 pv_mda_used_count 0
26
check pv_field $dev2 pv_mda_count $mdacp
27
check pv_field $dev2 pv_mda_used_count $mdacp
24
pvchange --metadataignore y "$dev1"
25
check pv_field "$dev1" pv_mda_count $mdacp
26
check pv_field "$dev1" pv_mda_used_count 0
27
check pv_field "$dev2" pv_mda_count $mdacp
28
check pv_field "$dev2" pv_mda_used_count $mdacp
28
29
if [ $pv_in_vg = 1 ]; then
29
30
check vg_field $vg vg_mda_count $(($mdacp * 2))
30
31
check vg_field $vg vg_mda_used_count $mdacp
31
32
check vg_field $vg vg_mda_copies unmanaged
33
pvchange --metadataignore n $dev1
34
check pv_field $dev1 pv_mda_count $mdacp
35
check pv_field $dev1 pv_mda_used_count $mdacp
34
pvchange --metadataignore n "$dev1"
35
check pv_field "$dev1" pv_mda_count $mdacp
36
check pv_field "$dev1" pv_mda_used_count $mdacp
36
37
if [ $pv_in_vg = 1 ]; then
37
38
check vg_field $vg vg_mda_count $(($mdacp * 2))
38
39
check vg_field $vg vg_mda_used_count $(($mdacp * 2))
87
88
check vg_field $vg vg_mda_copies unmanaged
89
90
echo vgcreate succeeds even when creating a VG w/all ignored mdas
90
pvchange --metadataignore y $dev1 $dev2
91
check pv_field $dev1 pv_mda_count $mdacp
92
check pv_field $dev2 pv_mda_used_count 0
93
vgcreate -c n "$vg" $dev1 $dev2
91
pvchange --metadataignore y "$dev1" "$dev2"
92
check pv_field "$dev1" pv_mda_count $mdacp
93
check pv_field "$dev2" pv_mda_used_count 0
94
vgcreate -c n $vg "$dev1" "$dev2"
94
95
check vg_field $vg vg_mda_copies unmanaged
96
97
echo vgcreate succeeds with a specific number of metadata copies
97
vgcreate -c n --vgmetadatacopies $(($mdacp * 2)) "$vg" $dev1 $dev2
98
vgcreate -c n --vgmetadatacopies $(($mdacp * 2)) $vg "$dev1" "$dev2"
98
99
check vg_field $vg vg_mda_copies $(($mdacp * 2))
100
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) "$vg" $dev1 $dev2
101
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg "$dev1" "$dev2"
101
102
check vg_field $vg vg_mda_copies $(($mdacp * 1))
103
104
echo vgcreate succeeds with a larger value than total metadatacopies
104
vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) "$vg" $dev1 $dev2
105
vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) $vg "$dev1" "$dev2"
105
106
check vg_field $vg vg_mda_copies $(($mdacp * 5))
107
108
echo vgcreate succeeds with --vgmetadatacopies unmanaged
108
vgcreate -c n --vgmetadatacopies unmanaged "$vg" $dev1 $dev2
109
vgcreate -c n --vgmetadatacopies unmanaged $vg "$dev1" "$dev2"
109
110
check vg_field $vg vg_mda_copies unmanaged
115
116
echo vgcreate succeds with small value of --metadatacopies, ignores mdas
116
vgcreate -c n --vgmetadatacopies 1 "$vg" $dev1 $dev2 $dev4 $dev5
117
vgcreate -c n --vgmetadatacopies 1 $vg "$dev1" "$dev2" "$dev4" "$dev5"
117
118
check vg_field $vg vg_mda_copies 1
118
119
check vg_field $vg vg_mda_count $(($mdacp * 4))
119
120
check vg_field $vg vg_mda_used_count 1
130
131
vgchange --vgmetadatacopies 0 $vg
131
132
check vg_field $vg vg_mda_copies unmanaged
133
vgcreate -c n --vgmetadatacopies 0 "$vg" $dev1 $dev2 $dev4 $dev5
134
vgcreate -c n --vgmetadatacopies 0 $vg "$dev1" "$dev2" "$dev4" "$dev5"
134
135
check vg_field $vg vg_mda_copies unmanaged
138
139
echo Test vgextend / vgreduce with vgmetadatacopies
139
140
for mdacp in 1 2; do
140
pvcreate --metadatacopies $mdacp $dev1 $dev2 $dev4 $dev5
141
pvcreate --metadatacopies 0 $dev3
141
pvcreate --metadatacopies $mdacp "$dev1" "$dev2" "$dev4" "$dev5"
142
pvcreate --metadatacopies 0 "$dev3"
142
143
echo Set a large value of vgmetadatacopies
143
vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) "$vg" $dev1 $dev2 $dev3
144
vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) $vg "$dev1" "$dev2" "$dev3"
144
145
check vg_field $vg vg_mda_copies $(($mdacp * 5))
145
146
echo Ignore mdas on devices to be used for vgextend
146
147
echo Large value of vgetadatacopies should automatically un-ignore mdas
147
pvchange --metadataignore y $dev4 $dev5
148
check pv_field $dev4 pv_mda_used_count 0
149
vgextend $vg $dev4 $dev5
150
check pv_field $dev4 pv_mda_used_count $mdacp
151
check pv_field $dev5 pv_mda_used_count $mdacp
148
pvchange --metadataignore y "$dev4" "$dev5"
149
check pv_field "$dev4" pv_mda_used_count 0
150
vgextend $vg "$dev4" "$dev5"
151
check pv_field "$dev4" pv_mda_used_count $mdacp
152
check pv_field "$dev5" pv_mda_used_count $mdacp
153
154
echo Set a small value of vgmetadatacopies
154
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) "$vg" $dev1 $dev2 $dev3
155
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg "$dev1" "$dev2" "$dev3"
155
156
check vg_field $vg vg_mda_copies $(($mdacp * 1))
156
157
echo Ignore mdas on devices to be used for vgextend
157
158
echo Small value of vgetadatacopies should leave mdas as ignored
158
pvchange --metadataignore y $dev4 $dev5
159
check pv_field $dev4 pv_mda_used_count 0
160
vgextend $vg $dev4 $dev5
161
check pv_field $dev4 pv_mda_used_count 0
162
check pv_field $dev5 pv_mda_used_count 0
159
pvchange --metadataignore y "$dev4" "$dev5"
160
check pv_field "$dev4" pv_mda_used_count 0
161
vgextend $vg "$dev4" "$dev5"
162
check pv_field "$dev4" pv_mda_used_count 0
163
check pv_field "$dev5" pv_mda_used_count 0
163
164
echo vgreduce of ignored pv w/mda should not trigger any change to ignore bits
165
check pv_field $dev4 pv_mda_used_count 0
166
check pv_field $dev5 pv_mda_used_count 0
166
check pv_field "$dev4" pv_mda_used_count 0
167
check pv_field "$dev5" pv_mda_used_count 0
167
168
echo vgreduce of un-ignored pv w/mda should trigger un-ignore on an mda
168
vgreduce $vg $dev1 $dev2 $dev3
169
check pv_field $dev5 pv_mda_used_count $mdacp
169
vgreduce $vg "$dev1" "$dev2" "$dev3"
170
check pv_field "$dev5" pv_mda_used_count $mdacp
170
171
check vg_field $vg vg_mda_copies $(($mdacp * 1))
173
174
echo setting vgmetadatacopies to unmanaged should allow vgextend to add w/out balancing
174
175
vgchange --vgmetadatacopies unmanaged $vg
175
vgextend $vg $dev1 $dev2
176
vgextend $vg "$dev1" "$dev2"
176
177
check vg_field $vg vg_mda_copies unmanaged
177
178
check vg_field $vg vg_mda_count $(($mdacp * 3))
178
179
check vg_field $vg vg_mda_used_count $((mdacp * 3))
179
check pv_field $dev1 pv_mda_used_count $mdacp
180
check pv_field $dev2 pv_mda_used_count $mdacp
180
check pv_field "$dev1" pv_mda_used_count $mdacp
181
check pv_field "$dev2" pv_mda_used_count $mdacp
184
185
echo Test special situations, vgsplit, vgmerge, etc
185
186
for mdacp in 1 2; do
186
pvcreate --metadatacopies $mdacp $dev1 $dev2 $dev3 $dev4 $dev5
187
vgcreate -c n --vgmetadatacopies 2 $vg1 $dev1 $dev2 $dev3
188
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg2 $dev4 $dev5
187
pvcreate --metadatacopies $mdacp "$dev1" "$dev2" "$dev3" "$dev4" "$dev5"
188
vgcreate -c n --vgmetadatacopies 2 $vg1 "$dev1" "$dev2" "$dev3"
189
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg2 "$dev4" "$dev5"
189
190
echo vgsplit/vgmerge preserves value of metadata copies
190
191
check vg_field $vg1 vg_mda_copies 2
191
192
check vg_field $vg2 vg_mda_copies $(($mdacp * 1))
192
vgsplit $vg1 $vg2 $dev1
193
vgsplit $vg1 $vg2 "$dev1"
193
194
check vg_field $vg2 vg_mda_copies $(($mdacp * 1))
194
195
vgmerge $vg1 $vg2
195
196
check vg_field $vg1 vg_mda_copies 2
196
197
check vg_field $vg1 vg_mda_count $(($mdacp * 5))
197
198
echo vgsplit into new vg sets proper value of vgmetadatacopies
198
vgsplit --vgmetadatacopies $(($mdacp * 2)) $vg1 $vg2 $dev1 $dev2
199
vgsplit --vgmetadatacopies $(($mdacp * 2)) $vg1 $vg2 "$dev1" "$dev2"
199
200
check vg_field $vg2 vg_mda_copies $(($mdacp * 2))
200
201
echo vgchange fails if given both vgmetadatacopies and metadatacopies
201
202
not vgchange --vgmetadatacopies 5 --metadatacopies 7 $vg2
203
vgremove -f $vg1 $vg2
206
206
echo Test combination of --vgmetadatacopies and pvchange --metadataignore
207
207
for mdacp in 1 2; do
208
pvcreate --metadatacopies $mdacp $dev1 $dev2 $dev3 $dev4 $dev5
209
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg1 $dev1 $dev2
208
pvcreate --metadatacopies $mdacp "$dev1" "$dev2" "$dev3" "$dev4" "$dev5"
209
vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg1 "$dev1" "$dev2"
210
210
check vg_field $vg1 vg_mda_copies $(($mdacp * 1))
211
211
check vg_field $vg1 vg_mda_used_count $(($mdacp * 1))
213
213
echo Ensure vgextend of PVs with ignored MDAs does not add to vg_mda_used_count
214
vgextend $vg1 "$dev3"
215
215
check vg_field $vg1 vg_mda_used_count $(($mdacp * 1))
216
216
echo Using pvchange to unignore should update vg_mda_used_count
217
pvchange -f --metadataignore n $dev3
218
check pv_field $dev3 pv_mda_used_count $mdacp
217
pvchange -f --metadataignore n "$dev3"
218
check pv_field "$dev3" pv_mda_used_count $mdacp
219
219
check vg_field $vg1 vg_mda_used_count $(($mdacp * 2))
220
220
echo Set unmanaged on the vg should keep ignore bits the same during vgextend
221
221
vgchange --vgmetadatacopies unmanaged $vg1
222
222
check vg_field $vg1 vg_mda_used_count $(($mdacp * 2))
225
check pv_field $dev4 pv_mda_used_count $mdacp
224
vgextend $vg1 "$dev4"
225
check pv_field "$dev4" pv_mda_used_count $mdacp
226
226
check vg_field $vg1 vg_mda_used_count $(($mdacp * 3))
227
227
echo Using pvchange to ignore should update vg_mda_used_count
228
pvchange -f --metadataignore y $dev4
229
check pv_field $dev4 pv_mda_used_count 0
228
pvchange -f --metadataignore y "$dev4"
229
check pv_field "$dev4" pv_mda_used_count 0
230
230
check vg_field $vg1 vg_mda_used_count $(($mdacp * 2))