1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Revert "tests: Remove unsupported mirrored mirrorlog"

Incorrect cherry pick from another branch.

This reverts commit 07fc4866f0.
This commit is contained in:
Marian Csontos 2018-12-18 10:55:35 +01:00
parent 88153c7c0a
commit 93c7bca08f
8 changed files with 148 additions and 2 deletions

View File

@ -122,11 +122,15 @@ test_lvconvert() {
aux prepare_vg 5 5
get_devs
MIRRORED="mirrored"
# FIXME: Cluster is not supporting exlusive activation of mirrored log
test -e LOCAL_CLVMD && MIRRORED=
test_many() {
i=$1
for j in $(seq 0 3); do
for k in core disk; do
for l in core disk; do
for k in core disk $MIRRORED; do
for l in core disk $MIRRORED; do
if test "$i" -eq "$j" && test "$k" = "$l"; then continue; fi
: ----------------------------------------------------
: "Testing mirror conversion -m$i/$k -> -m$j/$l"

View File

@ -243,6 +243,18 @@ not lvconvert --type mirror -m1 --corelog --stripes 2 $vg/$lv1
lvremove -ff $vg
# Linear to mirror with mirrored log using --alloc anywhere
lvcreate -aey -l2 -n $lv1 $vg "$dev1"
if test -e LOCAL_CLVMD; then
# This is not supposed to work in cluster
not lvconvert --type mirror -m +1 --mirrorlog mirrored --alloc anywhere $vg/$lv1 "$dev1" "$dev2"
else
lvconvert --type mirror -m +1 --mirrorlog mirrored --alloc anywhere $vg/$lv1 "$dev1" "$dev2"
check mirror $vg $lv1
fi
lvremove -ff $vg
if test -e LOCAL_CLVMD; then
: # FIXME - cases which needs to be fixed to work in cluster
else

View File

@ -71,3 +71,33 @@ lvconvert -y --repair $vg/mirror2
check mirror $vg mirror2
vgs $vg
vgremove -ff $vg
if aux kernel_at_least 3 0 0; then
# 2-way, mirrored log
# Double log failure, full replace
vgcreate $SHARED $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6"
lvcreate -aey --mirrorlog mirrored --type mirror -m 1 --ignoremonitoring --nosync -L 1 -n 2way $vg \
"$dev1" "$dev2" "$dev3":0 "$dev4":0
aux disable_dev "$dev3" "$dev4"
lvconvert -y --repair $vg/2way 2>&1 | tee 2way.out
lvs -a -o +devices $vg | not grep unknown
not grep "WARNING: Failed" 2way.out
vgreduce --removemissing $vg
check mirror $vg 2way
aux enable_dev "$dev3" "$dev4"
vgremove -ff $vg
fi
# 3-way, mirrored log
# Single log failure, replace
vgcreate $SHARED $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6"
lvcreate -aey --mirrorlog mirrored --type mirror -m 2 --ignoremonitoring --nosync -L 1 -n 3way $vg \
"$dev1" "$dev2" "$dev3" "$dev4":0 "$dev5":0
aux disable_dev "$dev4"
lvconvert -y --repair $vg/3way 2>&1 | tee 3way.out
lvs -a -o +devices $vg | not grep unknown
not grep "WARNING: Failed" 3way.out
vgreduce --removemissing $vg
check mirror $vg 3way
aux enable_dev "$dev4"
vgremove -ff $vg

View File

@ -69,6 +69,17 @@ _check_mlog
vgreduce --removemissing $vg
aux enable_dev "$dev4"
# 3-way, mirrored log => 3-way, core log
recreate_vg_
lvcreate -aey --type mirror -m 2 --mirrorlog mirrored --ignoremonitoring -L 1 -n 3way $vg \
"$dev1" "$dev2" "$dev3" "$dev4":0 "$dev5":0
aux disable_dev "$dev4" "$dev5"
echo n | lvconvert --repair $vg/3way
check mirror $vg 3way core
_check_mlog
vgreduce --removemissing $vg
aux enable_dev "$dev4" "$dev5"
# 2-way, disk log => 2-way, core log
recreate_vg_
lvcreate -aey --type mirror -m 1 --ignoremonitoring -L 1 -n 2way $vg "$dev1" "$dev2" "$dev3":0

View File

@ -27,4 +27,10 @@ lvconvert --mirrorlog core $vg/mirror
not lvconvert -m 1 --mirrorlog disk $vg/mirror "$dev3" 2>&1 | tee errs
grep "two steps" errs
if test ! -e LOCAL_CLVMD ; then
# FIXME mirrored unsupported in cluster
not lvconvert -m 1 --mirrorlog mirrored $vg/mirror "$dev3" "$dev4" 2>&1 | tee errs
grep "two steps" errs
fi
vgremove -ff $vg

View File

@ -38,4 +38,26 @@ lvcreate -n$lv2 -l4 -s $vg/$lv1
lvcreate -n$lv3 -l4 --permission r -s $vg/$lv1
cleanup_lvs
# Skip the rest for cluster
if test -e LOCAL_CLVMD; then
# ---
# Create mirror on two devices with mirrored log using --alloc anywhere - should always fail in cluster
not lvcreate --type mirror -m 1 -l4 -n $lv1 --mirrorlog mirrored $vg --alloc anywhere "$dev1" "$dev2"
cleanup_lvs
else
# ---
# Create mirror on two devices with mirrored log using --alloc anywhere
lvcreate --type mirror -m 1 -l4 -n $lv1 --mirrorlog mirrored $vg --alloc anywhere "$dev1" "$dev2"
cleanup_lvs
# --
# Create mirror on one dev with mirrored log using --alloc anywhere, should fail
not lvcreate --type mirror -m 1 -l4 -n $lv1 --mirrorlog mirrored $vg --alloc anywhere "$dev1"
cleanup_lvs
fi
vgremove -ff $vg

View File

@ -38,6 +38,15 @@ not lvconvert -m2 $vg/lv
# Log conversion (disk -> core)
lvconvert --mirrorlog core $vg/lv
# Log conversion (core -> mirrored)
# FIXME on cluster
SHOULD=""
test -e LOCAL_CLVMD && SHOULD=should
$SHOULD lvconvert --mirrorlog mirrored $vg/lv
# Log conversion (mirrored -> core)
lvconvert --mirrorlog core $vg/lv
# Log conversion (core -> disk)
lvconvert --mirrorlog disk $vg/lv

View File

@ -122,6 +122,58 @@ COMM "vgsplit correctly splits mirror (log+leg on same dev) into $i VG ($j args)
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 -an -Zn -l 64 --mirrorlog mirrored --type mirror -m1 -n $lv1 $vg1 \
"$dev1" "$dev2" "$dev3" "$dev4"
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
fi
if [ $i = existing ]; then
check pvlv_counts $vg2 5 1 0
else
check pvlv_counts $vg2 4 1 0
fi
lvremove -f $vg2/$lv1
vgremove -f $vg2
# 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"