summaryrefslogtreecommitdiff
path: root/test/shell/vgsplit-operation.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/shell/vgsplit-operation.sh')
-rw-r--r--test/shell/vgsplit-operation.sh132
1 files changed, 91 insertions, 41 deletions
diff --git a/test/shell/vgsplit-operation.sh b/test/shell/vgsplit-operation.sh
index c9cc04a..eb24a58 100644
--- a/test/shell/vgsplit-operation.sh
+++ b/test/shell/vgsplit-operation.sh
@@ -1,5 +1,6 @@
-#!/bin/sh
-# Copyright (C) 2007 Red Hat, Inc. All rights reserved.
+#!/usr/bin/env bash
+
+# Copyright (C) 2007,2018 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
@@ -7,18 +8,23 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# Test vgsplit operation, including different LV types
-. lib/test
+SKIP_WITH_LVMLOCKD=1
+SKIP_WITH_LVMPOLLD=1
+
+. lib/inittest
+
+aux lvmconf "global/support_mirrored_mirror_log=1"
COMM() {
- LAST_TEST="$@"
+ LAST_TEST="$*"
}
create_vg_() {
- vgcreate -c n -s 64k "$@"
+ vgcreate -s 64k "$@"
}
aux prepare_pvs 5 10
@@ -40,8 +46,7 @@ COMM "vgsplit correctly splits single linear LV into $i VG ($j args)"
create_vg_ $vg1 "$dev1" "$dev2"
test $i = existing && create_vg_ $vg2 "$dev3" "$dev4"
- lvcreate -l 4 -n $lv1 $vg1 "$dev1"
- vgchange -an $vg1
+ lvcreate -an -Zn -l 4 -n $lv1 $vg1 "$dev1"
if [ $j = PV ]; then
vgsplit $vg1 $vg2 "$dev1"
else
@@ -60,8 +65,7 @@ COMM "vgsplit correctly splits single striped LV into $i VG ($j args)"
create_vg_ $vg1 "$dev1" "$dev2"
test $i = existing && create_vg_ $vg2 "$dev3" "$dev4"
- lvcreate -l 4 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
- vgchange -an $vg1
+ lvcreate -an -Zn -l 4 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
if [ $j = PV ]; then
vgsplit $vg1 $vg2 "$dev1" "$dev2"
else
@@ -79,9 +83,12 @@ COMM "vgsplit correctly splits mirror LV into $i VG ($j args)"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3"
test $i = existing && create_vg_ $vg2 "$dev4"
- lvcreate -l 64 -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3"
- vgchange -an $vg1
+ lvcreate -an -Zn -l 64 --type mirror -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3"
if [ $j = PV ]; then
+ # FIXME: Not an exhaustive check of possible bad combinations
+ not vgsplit $vg1 $vg2 "$dev1" "$dev2"
+ not vgsplit $vg1 $vg2 "$dev1" "$dev3"
+ not vgsplit $vg1 $vg2 "$dev2" "$dev3"
vgsplit $vg1 $vg2 "$dev1" "$dev2" "$dev3"
else
vgsplit -n $lv1 $vg1 $vg2
@@ -93,17 +100,44 @@ COMM "vgsplit correctly splits mirror LV into $i VG ($j args)"
fi
lvremove -f $vg2/$lv1
vgremove -f $vg2
-# FIXME: ensure split /doesn't/ work when not all devs of mirror specified
+# RHBZ 875903
+COMM "vgsplit correctly splits mirror (log+leg on same dev) into $i VG ($j args)"
+ create_vg_ $vg1 "$dev1" "$dev2" "$dev3"
+ test $i = existing && create_vg_ $vg2 "$dev4"
+
+ lvcreate -an -Zn -l 64 --type mirror -m1 -n $lv1 $vg1 "$dev1" "$dev2"
+ if [ $j = PV ]; then
+ not vgsplit $vg1 $vg2 "$dev1"
+ not vgsplit $vg1 $vg2 "$dev2"
+ vgsplit $vg1 $vg2 "$dev1" "$dev2"
+ else
+ vgsplit -n $lv1 $vg1 $vg2
+ fi
+ if [ $i = existing ]; then
+ check pvlv_counts $vg2 3 1 0
+ else
+ check pvlv_counts $vg2 2 1 0
+ fi
+ lvremove -f $vg2/$lv1
+ vgremove -f $vg1 $vg2
+
+# Can't use mirrored log without cmirrord
+# TODO: Should work for inactive device, needs some fixes....
+if test ! -e LOCAL_CLVMD ; then
COMM "vgsplit correctly splits mirror LV with mirrored log into $i VG ($j args)"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
test $i = existing && create_vg_ $vg2 "$dev5"
- lvcreate -l 64 --mirrorlog mirrored -m1 -n $lv1 $vg1 \
+ lvcreate -an -Zn -l 64 --mirrorlog mirrored --type mirror -m1 -n $lv1 $vg1 \
"$dev1" "$dev2" "$dev3" "$dev4"
- vgchange -an $vg1
if [ $j = PV ]; then
+ # FIXME: Not an exhaustive check of possible bad combinations
+ not vgsplit $vg1 $vg2 "$dev1" "$dev2"
+ not vgsplit $vg1 $vg2 "$dev3" "$dev4"
+ not vgsplit $vg1 $vg2 "$dev1" "$dev3"
+ not vgsplit $vg1 $vg2 "$dev2" "$dev4"
vgsplit $vg1 $vg2 "$dev1" "$dev2" "$dev3" "$dev4"
else
vgsplit -n $lv1 $vg1 $vg2
@@ -115,13 +149,36 @@ COMM "vgsplit correctly splits mirror LV with mirrored log into $i VG ($j args)"
fi
lvremove -f $vg2/$lv1
vgremove -f $vg2
-# FIXME: ensure split /doesn't/ work when not all devs of mirror specified
+
+# RHBZ 875903
+COMM "vgsplit correctly splits mirror LV with mirrored log on same devs into $i VG ($j args)"
+ create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
+ test $i = existing && create_vg_ $vg2 "$dev5"
+
+ lvcreate -an -Zn -l 64 --mirrorlog mirrored --type mirror -m1 -n $lv1 $vg1 \
+ "$dev1" "$dev2"
+
+ if [ $j = PV ]; then
+ not vgsplit $vg1 $vg2 "$dev1"
+ not vgsplit $vg1 $vg2 "$dev2"
+ vgsplit $vg1 $vg2 "$dev1" "$dev2"
+ else
+ vgsplit -n $lv1 $vg1 $vg2
+ fi
+ if [ $i = existing ]; then
+ check pvlv_counts $vg2 3 1 0
+ else
+ check pvlv_counts $vg2 2 1 0
+ fi
+ lvremove -f $vg2/$lv1
+ vgremove -f $vg1 $vg2
+fi
COMM "vgsplit correctly splits origin and snapshot LV into $i VG ($j args)"
create_vg_ $vg1 "$dev1" "$dev2"
test $i = existing && create_vg_ $vg2 "$dev3" "$dev4"
- lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
+ lvcreate -aey -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
vgchange -an $vg1
if [ $j = PV ]; then
@@ -142,7 +199,7 @@ COMM "vgsplit correctly splits linear LV but not snap+origin LV into $i VG ($j a
create_vg_ $vg1 "$dev1" "$dev2"
test $i = existing && create_vg_ $vg2 "$dev3"
- lvcreate -l 64 -i 2 -n $lv1 $vg1
+ lvcreate -aey -l 64 -i 2 -n $lv1 $vg1
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
vgextend $vg1 "$dev4"
lvcreate -l 64 -n $lv3 $vg1 "$dev4"
@@ -167,10 +224,9 @@ COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3"
test $i = existing && create_vg_ $vg2 "$dev5"
- lvcreate -l 64 -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3"
+ lvcreate -an -Zn -l 64 --type mirror -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3"
vgextend $vg1 "$dev4"
- lvcreate -l 64 -n $lv2 $vg1 "$dev4"
- vgchange -an $vg1
+ lvcreate -an -Zn -l 64 -n $lv2 $vg1 "$dev4"
if [ $j = PV ]; then
vgsplit $vg1 $vg2 "$dev4"
else
@@ -184,7 +240,6 @@ COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)"
check pvlv_counts $vg2 1 1 0
fi
vgremove -f $vg1 $vg2
-
done
done
@@ -194,16 +249,15 @@ done
#
COMM "vgsplit fails splitting 3 striped LVs into VG when only 1 LV specified"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 4 -n $lv1 -i 2 $vg1 "$dev1" "$dev2"
-lvcreate -l 4 -n $lv2 -i 2 $vg1 "$dev2" "$dev3"
-lvcreate -l 4 -n $lv3 -i 2 $vg1 "$dev3" "$dev4"
-vgchange -an $vg1
+lvcreate -an -Zn -l 4 -n $lv1 -i 2 $vg1 "$dev1" "$dev2"
+lvcreate -an -Zn -l 4 -n $lv2 -i 2 $vg1 "$dev2" "$dev3"
+lvcreate -an -Zn -l 4 -n $lv3 -i 2 $vg1 "$dev3" "$dev4"
not vgsplit -n $lv1 $vg1 $vg2
vgremove -f $vg1
COMM "vgsplit fails splitting one LV with 2 snapshots, only origin LV specified"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 16 -n $lv1 $vg1 "$dev1" "$dev2"
+lvcreate -aey -l 16 -n $lv1 $vg1 "$dev1" "$dev2"
lvcreate -l 4 -n $lv2 -s $vg1/$lv1 "$dev3"
lvcreate -l 4 -n $lv3 -s $vg1/$lv1 "$dev4"
check pvlv_counts $vg1 4 3 2
@@ -215,7 +269,7 @@ vgremove -f $vg1
COMM "vgsplit fails splitting one LV with 2 snapshots, only snapshot LV specified"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 16 -n $lv1 $vg1 "$dev1" "$dev2"
+lvcreate -aey -l 16 -n $lv1 $vg1 "$dev1" "$dev2"
lvcreate -l 4 -n $lv2 -s $vg1/$lv1 "$dev3"
lvcreate -l 4 -n $lv3 -s $vg1/$lv1 "$dev4"
check pvlv_counts $vg1 4 3 2
@@ -227,18 +281,16 @@ vgremove -f $vg1
COMM "vgsplit fails splitting one mirror LV, only one PV specified"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
+lvcreate -an -Zn -l 16 -n $lv1 --type mirror -m1 $vg1 "$dev1" "$dev2" "$dev3"
check pvlv_counts $vg1 4 1 0
-vgchange -an $vg1
not vgsplit $vg1 $vg2 "$dev2"
vgremove -ff $vg1
COMM "vgsplit fails splitting 1 mirror + 1 striped LV, only striped LV specified"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
-lvcreate -l 16 -n $lv2 -i 2 $vg1 "$dev3" "$dev4"
+lvcreate -an -Zn -l 16 -n $lv1 --type mirror --nosync -m1 $vg1 "$dev1" "$dev2" "$dev3"
+lvcreate -an -Zn -l 16 -n $lv2 -i 2 $vg1 "$dev3" "$dev4"
check pvlv_counts $vg1 4 2 0
-vgchange -an $vg1
not vgsplit -n $lv2 $vg1 $vg2 2>err
vgremove -f $vg1
@@ -247,7 +299,7 @@ vgremove -f $vg1
#
COMM "vgsplit fails, active mirror involved in split"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
+lvcreate -aey -l 16 -n $lv1 --type mirror --nosync -m1 $vg1 "$dev1" "$dev2" "$dev3"
lvcreate -l 16 -n $lv2 $vg1 "$dev4"
lvchange -an $vg1/$lv2
check pvlv_counts $vg1 4 2 0
@@ -257,7 +309,7 @@ vgremove -f $vg1
COMM "vgsplit succeeds, active mirror not involved in split"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3"
+lvcreate -aey -l 16 -n $lv1 --type mirror --nosync -m1 $vg1 "$dev1" "$dev2" "$dev3"
lvcreate -l 16 -n $lv2 $vg1 "$dev4"
lvchange -an $vg1/$lv2
check pvlv_counts $vg1 4 2 0
@@ -268,10 +320,9 @@ vgremove -f $vg1 $vg2
COMM "vgsplit fails, active snapshot involved in split"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4"
-lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
+lvcreate -aey -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
-lvcreate -l 64 -i 2 -n $lv3 $vg1 "$dev3" "$dev4"
-lvchange -an $vg1/$lv3
+lvcreate -an -Zn -l 64 -i 2 -n $lv3 $vg1 "$dev3" "$dev4"
check pvlv_counts $vg1 4 3 1
not vgsplit -n $lv2 $vg1 $vg2;
check pvlv_counts $vg1 4 3 1
@@ -280,11 +331,10 @@ vgremove -f $vg1
COMM "vgsplit succeeds, active snapshot not involved in split"
create_vg_ $vg1 "$dev1" "$dev2" "$dev3"
-lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
+lvcreate -aey -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2"
lvcreate -l 4 -s -n $lv2 $vg1/$lv1
vgextend $vg1 "$dev4"
-lvcreate -l 64 -n $lv3 $vg1 "$dev4"
-lvchange -an $vg1/$lv3
+lvcreate -an -Zn -l 64 -n $lv3 $vg1 "$dev4"
check pvlv_counts $vg1 4 3 1
vgsplit -n $lv3 $vg1 $vg2
check pvlv_counts $vg1 3 2 1