39
39
COMM "vgsplit correctly splits single linear LV into $i VG ($j args)"
40
create_vg_ $vg1 $dev1 $dev2
41
test $i = existing && create_vg_ $vg2 $dev3 $dev4
40
create_vg_ $vg1 "$dev1" "$dev2"
41
test $i = existing && create_vg_ $vg2 "$dev3" "$dev4"
43
lvcreate -l 4 -n $lv1 $vg1 $dev1
43
lvcreate -l 4 -n $lv1 $vg1 "$dev1"
45
45
if [ $j = PV ]; then
46
vgsplit $vg1 $vg2 $dev1
46
vgsplit $vg1 $vg2 "$dev1"
48
48
vgsplit -n $lv1 $vg1 $vg2
50
check pvlv_counts $vg1 1 0 0
50
check pvlv_counts $vg1 1 0 0
51
51
if [ $i = existing ]; then
52
52
check pvlv_counts $vg2 3 1 0
54
54
check pvlv_counts $vg2 1 1 0
57
57
vgremove -f $vg2 $vg1
59
59
COMM "vgsplit correctly splits single striped LV into $i VG ($j args)"
60
create_vg_ $vg1 $dev1 $dev2
61
test $i = existing && create_vg_ $vg2 $dev3 $dev4
60
create_vg_ $vg1 "$dev1" "$dev2"
61
test $i = existing && create_vg_ $vg2 "$dev3" "$dev4"
63
lvcreate -l 4 -i 2 -n $lv1 $vg1 $dev1 $dev2
63
lvcreate -l 4 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
65
65
if [ $j = PV ]; then
66
vgsplit $vg1 $vg2 $dev1 $dev2
66
vgsplit $vg1 $vg2 "$dev1" "$dev2"
68
68
vgsplit -n $lv1 $vg1 $vg2
70
70
if [ $i = existing ]; then
71
71
check pvlv_counts $vg2 4 1 0
73
73
check pvlv_counts $vg2 2 1 0
78
COMM "vgsplit correctly splits mirror LV into $i VG ($j args)"
79
create_vg_ $vg1 $dev1 $dev2 $dev3
80
test $i = existing && create_vg_ $vg2 $dev4
78
COMM "vgsplit correctly splits mirror LV into $i VG ($j args)"
79
create_vg_ $vg1 "$dev1" "$dev2" "$dev3"
80
test $i = existing && create_vg_ $vg2 "$dev4"
82
lvcreate -l 64 -m1 -n $lv1 $vg1 $dev1 $dev2 $dev3
82
lvcreate -l 64 -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3"
84
84
if [ $j = PV ]; then
85
vgsplit $vg1 $vg2 $dev1 $dev2 $dev3
85
vgsplit $vg1 $vg2 "$dev1" "$dev2" "$dev3"
87
87
vgsplit -n $lv1 $vg1 $vg2
89
89
if [ $i = existing ]; then
90
90
check pvlv_counts $vg2 4 1 0
92
92
check pvlv_counts $vg2 3 1 0
96
96
# FIXME: ensure split /doesn't/ work when not all devs of mirror specified
98
98
COMM "vgsplit correctly splits mirror LV with mirrored log into $i VG ($j args)"
99
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
100
test $i = existing && create_vg_ $vg2 $dev5
99
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
100
test $i = existing && create_vg_ $vg2 "$dev5"
102
102
lvcreate -l 64 --mirrorlog mirrored -m1 -n $lv1 $vg1 \
103
$dev1 $dev2 $dev3 $dev4
103
"$dev1" "$dev2" "$dev3" "$dev4"
105
105
vgchange -an $vg1
106
106
if [ $j = PV ]; then
107
vgsplit $vg1 $vg2 $dev1 $dev2 $dev3 $dev4
107
vgsplit $vg1 $vg2 "$dev1" "$dev2" "$dev3" "$dev4"
109
109
vgsplit -n $lv1 $vg1 $vg2
118
118
# FIXME: ensure split /doesn't/ work when not all devs of mirror specified
120
COMM "vgsplit correctly splits origin and snapshot LV into $i VG ($j args)"
121
create_vg_ $vg1 $dev1 $dev2
122
test $i = existing && create_vg_ $vg2 $dev3 $dev4
120
COMM "vgsplit correctly splits origin and snapshot LV into $i VG ($j args)"
121
create_vg_ $vg1 "$dev1" "$dev2"
122
test $i = existing && create_vg_ $vg2 "$dev3" "$dev4"
124
lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2
125
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
124
lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
125
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
127
127
if [ $j = PV ]; then
128
vgsplit $vg1 $vg2 $dev1 $dev2
128
vgsplit $vg1 $vg2 "$dev1" "$dev2"
130
130
vgsplit -n $lv1 $vg1 $vg2
132
132
if [ $i = existing ]; then
133
133
check pvlv_counts $vg2 4 2 1
135
135
check pvlv_counts $vg2 2 2 1
137
137
lvremove -f $vg2/$lv2
138
138
lvremove -f $vg2/$lv1
141
COMM "vgsplit correctly splits linear LV but not snap+origin LV into $i VG ($j args)"
142
create_vg_ $vg1 $dev1 $dev2
143
test $i = existing && create_vg_ $vg2 $dev3
141
COMM "vgsplit correctly splits linear LV but not snap+origin LV into $i VG ($j args)"
142
create_vg_ $vg1 "$dev1" "$dev2"
143
test $i = existing && create_vg_ $vg2 "$dev3"
145
lvcreate -l 64 -i 2 -n $lv1 $vg1
146
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
148
lvcreate -l 64 -n $lv3 $vg1 $dev4
145
lvcreate -l 64 -i 2 -n $lv1 $vg1
146
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
147
vgextend $vg1 "$dev4"
148
lvcreate -l 64 -n $lv3 $vg1 "$dev4"
150
150
if [ $j = PV ]; then
151
vgsplit $vg1 $vg2 $dev4
151
vgsplit $vg1 $vg2 "$dev4"
153
153
vgsplit -n $lv3 $vg1 $vg2
155
155
if [ $i = existing ]; then
156
156
check pvlv_counts $vg2 2 1 0
157
157
check pvlv_counts $vg1 2 2 1
159
159
check pvlv_counts $vg2 1 1 0
160
160
check pvlv_counts $vg1 2 2 1
162
162
lvremove -f $vg1/$lv2
163
163
lvremove -f $vg1/$lv1 $vg2/$lv3
164
164
vgremove -f $vg1 $vg2
166
COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)"
167
create_vg_ $vg1 $dev1 $dev2 $dev3
168
test $i = existing && create_vg_ $vg2 $dev5
166
COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)"
167
create_vg_ $vg1 "$dev1" "$dev2" "$dev3"
168
test $i = existing && create_vg_ $vg2 "$dev5"
170
lvcreate -l 64 -m1 -n $lv1 $vg1 $dev1 $dev2 $dev3
172
lvcreate -l 64 -n $lv2 $vg1 $dev4
170
lvcreate -l 64 -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3"
171
vgextend $vg1 "$dev4"
172
lvcreate -l 64 -n $lv2 $vg1 "$dev4"
174
174
if [ $j = PV ]; then
175
vgsplit $vg1 $vg2 $dev4
175
vgsplit $vg1 $vg2 "$dev4"
177
177
vgsplit -n $lv2 $vg1 $vg2
179
179
if [ $i = existing ]; then
180
180
check pvlv_counts $vg1 3 1 0
181
181
check pvlv_counts $vg2 2 1 0
183
183
check pvlv_counts $vg1 3 1 0
184
184
check pvlv_counts $vg2 1 1 0
186
lvremove -f $vg1/$lv1 $vg2/$lv2
187
186
vgremove -f $vg1 $vg2
193
192
# Test more complex setups where the code has to find associated PVs and
194
193
# LVs to split the VG correctly
196
COMM "vgsplit fails splitting 3 striped LVs into VG when only 1 LV specified"
197
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
198
lvcreate -l 4 -n $lv1 -i 2 $vg1 $dev1 $dev2
199
lvcreate -l 4 -n $lv2 -i 2 $vg1 $dev2 $dev3
200
lvcreate -l 4 -n $lv3 -i 2 $vg1 $dev3 $dev4
195
COMM "vgsplit fails splitting 3 striped LVs into VG when only 1 LV specified"
196
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
197
lvcreate -l 4 -n $lv1 -i 2 $vg1 "$dev1" "$dev2"
198
lvcreate -l 4 -n $lv2 -i 2 $vg1 "$dev2" "$dev3"
199
lvcreate -l 4 -n $lv3 -i 2 $vg1 "$dev3" "$dev4"
202
201
not vgsplit -n $lv1 $vg1 $vg2
205
COMM "vgsplit fails splitting one LV with 2 snapshots, only origin LV specified"
206
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
207
lvcreate -l 16 -n $lv1 $vg1 $dev1 $dev2
208
lvcreate -l 4 -n $lv2 -s $vg1/$lv1 $dev3
209
lvcreate -l 4 -n $lv3 -s $vg1/$lv1 $dev4
210
check pvlv_counts $vg1 4 3 2
204
COMM "vgsplit fails splitting one LV with 2 snapshots, only origin LV specified"
205
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
206
lvcreate -l 16 -n $lv1 $vg1 "$dev1" "$dev2"
207
lvcreate -l 4 -n $lv2 -s $vg1/$lv1 "$dev3"
208
lvcreate -l 4 -n $lv3 -s $vg1/$lv1 "$dev4"
209
check pvlv_counts $vg1 4 3 2
212
211
not vgsplit -n $lv1 $vg1 $vg2;
213
212
lvremove -f $vg1/$lv2 $vg1/$lv3
214
213
lvremove -f $vg1/$lv1
217
COMM "vgsplit fails splitting one LV with 2 snapshots, only snapshot LV specified"
218
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
219
lvcreate -l 16 -n $lv1 $vg1 $dev1 $dev2
220
lvcreate -l 4 -n $lv2 -s $vg1/$lv1 $dev3
221
lvcreate -l 4 -n $lv3 -s $vg1/$lv1 $dev4
222
check pvlv_counts $vg1 4 3 2
216
COMM "vgsplit fails splitting one LV with 2 snapshots, only snapshot LV specified"
217
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
218
lvcreate -l 16 -n $lv1 $vg1 "$dev1" "$dev2"
219
lvcreate -l 4 -n $lv2 -s $vg1/$lv1 "$dev3"
220
lvcreate -l 4 -n $lv3 -s $vg1/$lv1 "$dev4"
221
check pvlv_counts $vg1 4 3 2
224
223
not vgsplit -n $lv2 $vg1 $vg2
225
224
lvremove -f $vg1/$lv2 $vg1/$lv3
226
225
lvremove -f $vg1/$lv1
229
COMM "vgsplit fails splitting one mirror LV, only one PV specified"
230
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
231
lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3
232
check pvlv_counts $vg1 4 1 0
234
not vgsplit $vg1 $vg2 $dev2
237
COMM "vgsplit fails splitting 1 mirror + 1 striped LV, only striped LV specified"
238
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
239
lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3
240
lvcreate -l 16 -n $lv2 -i 2 $vg1 $dev3 $dev4
241
check pvlv_counts $vg1 4 2 0
228
COMM "vgsplit fails splitting one mirror LV, only one PV specified"
229
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
230
lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
231
check pvlv_counts $vg1 4 1 0
233
not vgsplit $vg1 $vg2 "$dev2"
236
COMM "vgsplit fails splitting 1 mirror + 1 striped LV, only striped LV specified"
237
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
238
lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
239
lvcreate -l 16 -n $lv2 -i 2 $vg1 "$dev3" "$dev4"
240
check pvlv_counts $vg1 4 2 0
243
242
not vgsplit -n $lv2 $vg1 $vg2 2>err
247
246
# Verify vgsplit rejects active LVs only when active LVs involved in split
249
COMM "vgsplit fails, active mirror involved in split"
250
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
251
lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3
252
lvcreate -l 16 -n $lv2 $vg1 $dev4
253
lvchange -an $vg1/$lv2
254
check pvlv_counts $vg1 4 2 0
248
COMM "vgsplit fails, active mirror involved in split"
249
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
250
lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
251
lvcreate -l 16 -n $lv2 $vg1 "$dev4"
252
lvchange -an $vg1/$lv2
253
check pvlv_counts $vg1 4 2 0
255
254
not vgsplit -n $lv1 $vg1 $vg2;
256
check pvlv_counts $vg1 4 2 0
259
COMM "vgsplit succeeds, active mirror not involved in split"
260
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
261
lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3
262
lvcreate -l 16 -n $lv2 $vg1 $dev4
263
lvchange -an $vg1/$lv2
264
check pvlv_counts $vg1 4 2 0
265
vgsplit -n $lv2 $vg1 $vg2
266
check pvlv_counts $vg1 3 1 0
267
check pvlv_counts $vg2 1 1 0
268
vgremove -ff $vg1 $vg2
270
COMM "vgsplit fails, active snapshot involved in split"
271
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
272
lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2
273
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
274
lvcreate -l 64 -i 2 -n $lv3 $vg1 $dev3 $dev4
275
lvchange -an $vg1/$lv3
276
check pvlv_counts $vg1 4 3 1
255
check pvlv_counts $vg1 4 2 0
258
COMM "vgsplit succeeds, active mirror not involved in split"
259
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
260
lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
261
lvcreate -l 16 -n $lv2 $vg1 "$dev4"
262
lvchange -an $vg1/$lv2
263
check pvlv_counts $vg1 4 2 0
264
vgsplit -n $lv2 $vg1 $vg2
265
check pvlv_counts $vg1 3 1 0
266
check pvlv_counts $vg2 1 1 0
267
vgremove -f $vg1 $vg2
269
COMM "vgsplit fails, active snapshot involved in split"
270
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
271
lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
272
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
273
lvcreate -l 64 -i 2 -n $lv3 $vg1 "$dev3" "$dev4"
274
lvchange -an $vg1/$lv3
275
check pvlv_counts $vg1 4 3 1
277
276
not vgsplit -n $lv2 $vg1 $vg2;
278
check pvlv_counts $vg1 4 3 1
279
lvremove -f $vg1/$lv2
277
check pvlv_counts $vg1 4 3 1
278
lvremove -f $vg1/$lv2
282
COMM "vgsplit succeeds, active snapshot not involved in split"
283
create_vg_ $vg1 $dev1 $dev2 $dev3
284
lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2
285
lvcreate -l 4 -s -n $lv2 $vg1/$lv1
287
lvcreate -l 64 -n $lv3 $vg1 $dev4
288
lvchange -an $vg1/$lv3
289
check pvlv_counts $vg1 4 3 1
290
vgsplit -n $lv3 $vg1 $vg2
291
check pvlv_counts $vg1 3 2 1
292
check pvlv_counts $vg2 1 1 0
294
lvremove -f $vg1/$lv2
295
vgremove -ff $vg1 $vg2
281
COMM "vgsplit succeeds, active snapshot not involved in split"
282
create_vg_ $vg1 "$dev1" "$dev2" "$dev3"
283
lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
284
lvcreate -l 4 -s -n $lv2 $vg1/$lv1
285
vgextend $vg1 "$dev4"
286
lvcreate -l 64 -n $lv3 $vg1 "$dev4"
287
lvchange -an $vg1/$lv3
288
check pvlv_counts $vg1 4 3 1
289
vgsplit -n $lv3 $vg1 $vg2
290
check pvlv_counts $vg1 3 2 1
291
check pvlv_counts $vg2 1 1 0
293
lvremove -f $vg1/$lv2
294
vgremove -f $vg1 $vg2