1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-02-25 21:57:45 +03:00

Speedup test run by a few minutes

Reduce disc excercise for some test and focus on LVM testing by
using smaller extent size.

Reduce number of teardown_devs calls and use vg/lvremove instead.

Don't sleep for seconds on pvmove.

FIXME: shell/lvconvert-mirror-basic.sh seems to need more checking.
Test fails for smalled extent size then 512k.
This commit is contained in:
Zdenek Kabelac 2012-03-04 16:02:19 +00:00
parent 3fb6ddf3ce
commit e04c6e4972
8 changed files with 134 additions and 162 deletions

View File

@ -121,7 +121,8 @@ test_lvconvert()
fi
}
aux prepare_vg 5 16
aux prepare_pvs 5 5
vgcreate -c n -s 128k $vg $(cat DEVICES)
test_many() {
i=$1

View File

@ -17,13 +17,16 @@ wait_for_mirror_in_sync_()
}
# convert from linear to 2-way mirror
aux prepare_vg 5
aux prepare_pvs 5 10
# FIXME - test fails with extent size < 512k
vgcreate -c n -s 512k $vg $(cat DEVICES)
lvcreate -l2 -n $lv1 $vg $dev1
lvconvert -i1 -m+1 $vg/$lv1 $dev2 $dev3:0-1
check mirror $vg $lv1 $dev3
lvremove -ff $vg
# convert from 2-way mirror to linear
aux prepare_vg 5
lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
lvconvert -m-1 $vg/$lv1
check linear $vg $lv1
@ -35,14 +38,12 @@ check lv_on $vg $lv1 $dev1
lvremove -ff $vg
# convert from disklog to corelog, active
aux prepare_vg 5
lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
lvconvert -f --mirrorlog core $vg/$lv1
check mirror $vg $lv1 core
lvremove -ff $vg
# convert from corelog to disklog, active
aux prepare_vg 5
lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2
lvconvert --mirrorlog disk $vg/$lv1 $dev3:0-1
check mirror $vg $lv1 $dev3
@ -50,7 +51,6 @@ lvremove -ff $vg
# bz192865: lvconvert log of an inactive mirror lv
# convert from disklog to corelog, inactive
aux prepare_vg 5
lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
lvchange -an $vg/$lv1
echo y | lvconvert -f --mirrorlog core $vg/$lv1
@ -58,7 +58,6 @@ check mirror $vg $lv1 core
lvremove -ff $vg
# convert from corelog to disklog, inactive
aux prepare_vg 5
lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2
lvchange -an $vg/$lv1
lvconvert --mirrorlog disk $vg/$lv1 $dev3:0-1
@ -66,7 +65,6 @@ check mirror $vg $lv1 $dev3
lvremove -ff $vg
# convert linear to 2-way mirror with 1 PV
aux prepare_vg 5
lvcreate -l2 -n $lv1 $vg $dev1
not lvconvert -m+1 --mirrorlog core $vg/$lv1 $dev1
lvremove -ff $vg
@ -90,10 +88,10 @@ check mirror_images_on $lv1 $dev2 $dev4
lvconvert -m-1 $vg/$lv1 $dev2
check linear $vg $lv1
check lv_on $vg $lv1 $dev4
lvremove -ff $vg
# No parallel lvconverts on a single LV please
aux prepare_vg 5
lvcreate -l5 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
check mirror $vg $lv1
check mirror_legs $vg $lv1 2
@ -107,29 +105,29 @@ lvconvert -m2 $vg/$lv1 # In case the above "should" actually failed
check mirror $vg $lv1 $dev3
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 3
lvremove -ff $vg
# add 1 mirror to core log mirror, but
# implicitly keep log as 'core'
aux prepare_vg 5
lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2
lvconvert -m +1 -i1 $vg/$lv1
check mirror $vg $lv1 core
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 3
lvremove -ff $vg
# remove 1 mirror from corelog'ed mirror; should retain 'core' log type
aux prepare_vg 5
lvcreate -l2 -m2 --corelog -n $lv1 $vg
lvconvert -m -1 -i1 $vg/$lv1
check mirror $vg $lv1 core
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 2
lvremove -ff $vg
# add 1 mirror then add 1 more mirror during conversion
# FIXME this has been explicitly forbidden?
#aux prepare_vg 5
#lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
#lvconvert -m+1 -b $vg/$lv1 $dev4
#lvconvert -m+1 $vg/$lv1 $dev5
@ -137,15 +135,15 @@ check mirror_legs $vg $lv1 2
#check mirror $vg $lv1 $dev3
#check mirror_no_temporaries $vg $lv1
#check mirror_legs $vg $lv1 4
#lvremove -ff $vg
# Linear to mirror with mirrored log using --alloc anywhere
aux prepare_vg 5
lvcreate -l2 -n $lv1 $vg $dev1
lvconvert -m +1 --mirrorlog mirrored $vg/$lv1 $dev1 $dev2 --alloc anywhere
should check mirror $vg $lv1
lvremove -ff $vg
# convert inactive mirror and start polling
aux prepare_vg 5
lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
lvchange -an $vg/$lv1
lvconvert -m+1 $vg/$lv1 $dev4
@ -153,12 +151,12 @@ lvchange -ay $vg/$lv1
lvconvert $vg/$lv1 # wait
check mirror $vg $lv1 $dev3
check mirror_no_temporaries $vg $lv1
lvremove -ff $vg
# ---------------------------------------------------------------------
# removal during conversion
# "remove newly added mirror"
aux prepare_vg 5
lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
lvconvert -m+1 -b $vg/$lv1 $dev4
lvconvert -m-1 $vg/$lv1 $dev4
@ -167,9 +165,9 @@ lvconvert $vg/$lv1 # wait
check mirror $vg $lv1 $dev3
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 2
lvremove -ff $vg
# "remove one of newly added mirrors"
aux prepare_vg 5
lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
lvconvert -m+2 -b $vg/$lv1 $dev4 $dev5
lvconvert -m-1 $vg/$lv1 $dev4
@ -178,9 +176,9 @@ lvconvert $vg/$lv1 # wait
check mirror $vg $lv1 $dev3
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 3
lvremove -ff $vg
# "remove from original mirror (the original is still mirror)"
aux prepare_vg 5
lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev5 $dev3:0
lvconvert -m+1 -b $vg/$lv1 $dev4
lvconvert -m-1 $vg/$lv1 $dev2
@ -189,9 +187,9 @@ lvconvert $vg/$lv1
check mirror $vg $lv1 $dev3
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 3
lvremove -ff $vg
# "remove from original mirror (the original becomes linear)"
aux prepare_vg 5
lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
lvconvert -m+1 -b $vg/$lv1 $dev4
lvconvert -m-1 $vg/$lv1 $dev2
@ -200,44 +198,44 @@ lvconvert $vg/$lv1
check mirror $vg $lv1 $dev3
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 2
lvremove -ff $vg
# ---------------------------------------------------------------------
# "rhbz440405: lvconvert -m0 incorrectly fails if all PEs allocated"
aux prepare_vg 5
lvcreate -l`pvs --noheadings -ope_count $dev1` -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
wait_for_mirror_in_sync_ $vg/$lv1
lvconvert -m0 $vg/$lv1 $dev1
check linear $vg $lv1
lvremove -ff $vg
# "rhbz264241: lvm mirror doesn't lose it's "M" --nosync attribute after being down and the up converted"
aux prepare_vg 5
lvcreate -l2 -m1 -n$lv1 --nosync $vg
lvconvert -m0 $vg/$lv1
lvconvert -m1 $vg/$lv1
lvs --noheadings -o attr $vg/$lv1 | grep '^ *m'
lvremove -ff $vg
# lvconvert from linear (on multiple PVs) to mirror
aux prepare_vg 5
lvcreate -l 8 -n $lv1 $vg $dev1:0-3 $dev2:0-3
lvconvert -m1 $vg/$lv1
should check mirror $vg $lv1
check mirror_legs $vg $lv1 2
lvremove -ff $vg
# BZ 463272: disk log mirror convert option is lost if downconvert option is also given
aux prepare_vg 5
lvcreate -l1 -m2 --corelog -n $lv1 $vg $dev1 $dev2 $dev3
wait_for_mirror_in_sync_ $vg/$lv1
lvconvert -m1 --mirrorlog disk $vg/$lv1
check mirror $vg $lv1
not check mirror $vg $lv1 core
lvremove -ff $vg
# ---
# add mirror and disk log
# "add 1 mirror and disk log"
aux prepare_vg 5
lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2
# FIXME on next line, specifying $dev3:0 $dev4 (i.e log device first) fails (!)
@ -246,9 +244,9 @@ lvconvert -m+1 --mirrorlog disk -i1 $vg/$lv1 $dev4 $dev3:0
check mirror $vg $lv1 $dev3
check mirror_no_temporaries $vg $lv1
check mirror_legs $vg $lv1 3
lvremove -ff $vg
# simple mirrored stripe
aux prepare_vg 5
lvcreate -i2 -l10 -n $lv1 $vg
lvconvert -m1 -i1 $vg/$lv1
lvreduce -f -l1 $vg/$lv1
@ -258,4 +256,4 @@ lvremove -ff $vg/$lv1
# extents must be divisible
lvcreate -l15 -n $lv1 $vg
not lvconvert -m1 --corelog --stripes 2 $vg/$lv1
lvremove -ff $vg/$lv1
lvremove -ff $vg

View File

@ -100,7 +100,7 @@ function is_raid_available()
########################################################
# MAIN
########################################################
is_raid_available || exit 200
is_raid_available || skip
aux prepare_vg 5 80
@ -213,5 +213,3 @@ for i in 1 2 3 ; do
lvconvert --type raid1 $vg/$lv1
lvremove -ff $vg
done
exit 0

View File

@ -11,6 +11,12 @@
. lib/test
recreate_vg_()
{
vgremove -ff $vg
vgcreate -c n $vg $(cat DEVICES)
}
aux lvmconf 'allocation/maximise_cling = 0'
aux lvmconf 'allocation/mirror_logs_require_separate_pvs = 1'
@ -27,7 +33,7 @@ aux enable_dev $dev2 $dev4
check mirror $vg 4way $dev5
# 3-way, disk log => linear
aux prepare_vg 5
recreate_vg_
lvcreate -m 2 --ig -L 1 -n 3way $vg
aux disable_dev $dev1 $dev2
echo n | lvconvert --repair $vg/3way
@ -42,7 +48,7 @@ check linear $vg 3way
# fail just log and get it removed
# 3-way, disk log => 3-way, core log
aux prepare_vg 5
recreate_vg_
lvcreate -m 2 --ig -L 1 -n 3way $vg $dev1 $dev2 $dev3 $dev4:0
aux disable_dev $dev4
echo n | lvconvert --repair $vg/3way
@ -54,7 +60,7 @@ vgreduce --removemissing $vg
aux enable_dev $dev4
# 3-way, mirrored log => 3-way, core log
aux prepare_vg 5
recreate_vg_
lvcreate -m 2 --mirrorlog mirrored --ig -L 1 -n 3way $vg \
$dev1 $dev2 $dev3 $dev4:0 $dev5:0
aux disable_dev $dev4 $dev5
@ -67,7 +73,7 @@ vgreduce --removemissing $vg
aux enable_dev $dev4 $dev5
# 2-way, disk log => 2-way, core log
aux prepare_vg 5
recreate_vg_
lvcreate -m 1 --ig -L 1 -n 2way $vg $dev1 $dev2 $dev3:0
aux disable_dev $dev3
echo n | lvconvert --repair $vg/2way
@ -79,7 +85,7 @@ aux enable_dev $dev3
# fail single devices
aux prepare_vg 5
recreate_vg_
vgreduce $vg $dev4
lvcreate -m 1 --ig -L 1 -n mirror $vg
@ -105,4 +111,4 @@ lvconvert -y --repair $vg/mirror
vgreduce --removemissing $vg
aux enable_dev $dev3
vgextend $vg $dev3
lvremove -ff $vg
vgremove -ff $vg

View File

@ -44,7 +44,7 @@ function wait_for_raid_sync()
local i=0
while ! is_raid_in_sync $1; do
sleep 2
sleep .2
i=$(($i + 1))
if [ $i -gt 500 ]; then
echo "Sync is taking too long - assume stuck"
@ -53,31 +53,13 @@ function wait_for_raid_sync()
done
}
function is_raid_available()
{
local a
modprobe dm-raid
a=(`dmsetup targets | grep raid`)
if [ -z $a ]; then
echo "RAID target not available"
return 1
fi
if [ ${a[1]} != "v1.1.0" ]; then
echo "Bad RAID version"
return 1
fi
return 0
}
########################################################
# MAIN
########################################################
is_raid_available || exit 200
aux prepare_vg 5 80
aux target_at_least dm-raid 1 1 0 || skip
aux prepare_pvs 5 20
vgcreate -c n -s 512k $vg $(cat DEVICES)
###########################################
# Create, wait for sync, remove tests

View File

@ -25,7 +25,7 @@ percent() {
lvs $vg/snap -o snap_percent --noheadings | cut -c4- | cut -d. -f1
}
which mkfs.ext2 || exit 200
which mkfs.ext2 || skip
aux prepare_vg 3
aux prepare_dmeventd

View File

@ -14,6 +14,9 @@ test_description="ensure that pvmove works with basic options"
. lib/test
which mkfs.ext2 || skip
which md5sum || skip
# ---------------------------------------------------------------------
# Utilities
@ -33,17 +36,22 @@ lv_is_on_() {
}
save_dev_sum_() {
mkfs.ext3 $1 > /dev/null && md5sum $1 > md5.$(basename $1)
mkfs.ext2 $1 > /dev/null && md5sum $1 > md5.$(basename $1)
}
check_dev_sum_() {
md5sum $1 > md5.tmp && cmp md5.$(basename $1) md5.tmp
md5sum -c md5.$(basename $1)
}
create_vg_() {
vgcreate -c n -s 128k $vg $(cat DEVICES)
}
# ---------------------------------------------------------------------
# Initialize PVs and VGs
aux prepare_vg 5 40
#aux prepare_vg 5 30
aux prepare_pvs 5 5
create_vg_
# ---------------------------------------------------------------------
# Common environment setup/cleanup for each sub testcases
@ -89,7 +97,6 @@ check_and_cleanup_lvs_() {
echo "ERROR: lvremove did leave some some mappings in DM behind!" && \
return 1
fi
:
}
#COMM "check environment setup/cleanup"
@ -115,7 +122,7 @@ check_and_cleanup_lvs_
#COMM "the 1st seg of 3-segs LV is moved: from pv1 of lv1 to pv4"
prepare_lvs_
pvmove -i1 -n $vg/$lv1 $dev1 $dev4
pvmove -i0 -n $vg/$lv1 $dev1 $dev4
lv_is_on_ $vg/$lv1 $dev4 $dev2 $dev3 $dev4
lv_not_changed_ $vg/$lv2
lv_not_changed_ $vg/$lv3
@ -123,7 +130,7 @@ check_and_cleanup_lvs_
#COMM "the 2nd seg of 3-segs LV is moved: from pv2 of lv1 to pv4"
prepare_lvs_
pvmove -i1 -n $vg/$lv1 $dev2 $dev4
pvmove -i0 -n $vg/$lv1 $dev2 $dev4
lv_is_on_ $vg/$lv1 $dev1 $dev4 $dev3 $dev1
lv_not_changed_ $vg/$lv2
lv_not_changed_ $vg/$lv3
@ -131,7 +138,7 @@ check_and_cleanup_lvs_
#COMM "the 3rd seg of 3-segs LV is moved: from pv3 of lv1 to pv4"
prepare_lvs_
pvmove -i1 -n $vg/$lv1 $dev3 $dev4
pvmove -i0 -n $vg/$lv1 $dev3 $dev4
lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev4 $dev1
lv_not_changed_ $vg/$lv2
lv_not_changed_ $vg/$lv3
@ -142,7 +149,7 @@ check_and_cleanup_lvs_
#COMM "1 out of 3 LVs is moved: from pv4 to pv5"
prepare_lvs_
pvmove -i1 $dev4 $dev5
pvmove -i0 $dev4 $dev5
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev5
lv_not_changed_ $vg/$lv3
@ -150,7 +157,7 @@ check_and_cleanup_lvs_
#COMM "2 out of 3 LVs are moved: from pv3 to pv5"
prepare_lvs_
pvmove -i1 $dev3 $dev5
pvmove -i0 $dev3 $dev5
lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev5 $dev1
lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4
lv_not_changed_ $vg/$lv3
@ -158,7 +165,7 @@ check_and_cleanup_lvs_
#COMM "3 out of 3 LVs are moved: from pv2 to pv5"
prepare_lvs_
pvmove -i1 $dev2 $dev5
pvmove -i0 $dev2 $dev5
lv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3 $dev1
lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4
lv_is_on_ $vg/$lv3 $dev5
@ -169,7 +176,7 @@ check_and_cleanup_lvs_
#COMM "move the 1st stripe: from pv2 of lv2 to pv1"
prepare_lvs_
pvmove -i1 -n $vg/$lv2 $dev2 $dev1
pvmove -i0 -n $vg/$lv2 $dev2 $dev1
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev1 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -177,7 +184,7 @@ check_and_cleanup_lvs_
#COMM "move the 2nd stripe: from pv3 of lv2 to pv1"
prepare_lvs_
pvmove -i1 -n $vg/$lv2 $dev3 $dev1
pvmove -i0 -n $vg/$lv2 $dev3 $dev1
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev2 $dev1 $dev4
lv_not_changed_ $vg/$lv3
@ -185,7 +192,7 @@ check_and_cleanup_lvs_
#COMM "move the 3rd stripe: from pv4 of lv2 to pv1"
prepare_lvs_
pvmove -i1 -n $vg/$lv2 $dev4 $dev1
pvmove -i0 -n $vg/$lv2 $dev4 $dev1
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev1
lv_not_changed_ $vg/$lv3
@ -196,7 +203,7 @@ check_and_cleanup_lvs_
#COMM "match to the start of segment:from pv2:0-0 to pv5"
prepare_lvs_
pvmove -i1 $dev2:0-0 $dev5
pvmove -i0 $dev2:0-0 $dev5
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev5 $dev2 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -204,7 +211,7 @@ check_and_cleanup_lvs_
#COMM "match to the middle of segment: from pv2:1-1 to pv5"
prepare_lvs_
pvmove -i1 $dev2:1-1 $dev5
pvmove -i0 $dev2:1-1 $dev5
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev2 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -212,7 +219,7 @@ check_and_cleanup_lvs_
#COMM "match to the end of segment: from pv2:2-2 to pv5"
prepare_lvs_
pvmove -i1 $dev2:2-2 $dev5
pvmove -i0 $dev2:2-2 $dev5
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -223,7 +230,7 @@ check_and_cleanup_lvs_
#COMM "no destination split: from pv2:0-2 to pv5"
prepare_lvs_
pvmove -i1 $dev2:0-2 $dev5
pvmove -i0 $dev2:0-2 $dev5
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -231,7 +238,7 @@ check_and_cleanup_lvs_
#COMM "destination split into 2: from pv2:0-2 to pv5:5-5 and pv4:5-6"
prepare_lvs_
pvmove -i1 --alloc anywhere $dev2:0-2 $dev5:5-5 $dev4:5-6
pvmove -i0 --alloc anywhere $dev2:0-2 $dev5:5-5 $dev4:5-6
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev5 $dev4 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -239,7 +246,7 @@ check_and_cleanup_lvs_
#COMM "destination split into 3: from pv2:0-2 to {pv3,4,5}:5-5"
prepare_lvs_
pvmove -i1 --alloc anywhere $dev2:0-2 $dev3:5-5 $dev4:5-5 $dev5:5-5
pvmove -i0 --alloc anywhere $dev2:0-2 $dev3:5-5 $dev4:5-5 $dev5:5-5
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev3 $dev4 $dev5 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -250,7 +257,7 @@ check_and_cleanup_lvs_
#COMM "alloc normal on same PV for source and destination: from pv3:0-2 to pv3:5-7"
prepare_lvs_
not pvmove -i1 $dev3:0-2 $dev3:5-7
not pvmove -i0 $dev3:0-2 $dev3:5-7
# "(cleanup previous test)"
lv_not_changed_ $vg/$lv1
lv_not_changed_ $vg/$lv2
@ -259,7 +266,7 @@ check_and_cleanup_lvs_
#COMM "alloc anywhere on same PV for source and destination: from pv3:0-2 to pv3:5-7"
prepare_lvs_
pvmove -i1 --alloc anywhere $dev3:0-2 $dev3:5-7
pvmove -i0 --alloc anywhere $dev3:0-2 $dev3:5-7
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -267,7 +274,7 @@ check_and_cleanup_lvs_
#COMM "alloc anywhere but better area available: from pv3:0-2 to pv3:5-7 or pv5:5-6,pv4:5-5"
prepare_lvs_
pvmove -i1 --alloc anywhere $dev3:0-2 $dev3:5-7 $dev5:5-6 $dev4:5-5
pvmove -i0 --alloc anywhere $dev3:0-2 $dev3:5-7 $dev5:5-6 $dev4:5-5
lv_not_changed_ $vg/$lv1
#lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4 $dev4
lv_not_changed_ $vg/$lv3
@ -275,7 +282,7 @@ check_and_cleanup_lvs_
#COMM "alloc contiguous but area not available: from pv2:0-2 to pv5:5-5 and pv4:5-6"
prepare_lvs_
not pvmove -i1 --alloc contiguous $dev2:0-2 $dev5:5-5 $dev4:5-6
not pvmove -i0 --alloc contiguous $dev2:0-2 $dev5:5-5 $dev4:5-6
# "(cleanup previous test)"
lv_not_changed_ $vg/$lv1
lv_not_changed_ $vg/$lv2
@ -284,7 +291,7 @@ check_and_cleanup_lvs_
#COMM "alloc contiguous and contiguous area available: from pv2:0-2 to pv5:0-0,pv5:3-5 and pv4:5-6"
prepare_lvs_
pvmove -i1 --alloc contiguous $dev2:0-2 $dev5:0-0 $dev5:3-5 $dev4:5-6
pvmove -i0 --alloc contiguous $dev2:0-2 $dev5:0-0 $dev5:3-5 $dev4:5-6
lv_not_changed_ $vg/$lv1
lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4
lv_not_changed_ $vg/$lv3
@ -295,7 +302,7 @@ check_and_cleanup_lvs_
#COMM "multiple source LVs: from pv3 to pv5"
prepare_lvs_
pvmove -i1 $dev3 $dev5
pvmove -i0 $dev3 $dev5
lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev5
lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4
lv_not_changed_ $vg/$lv3
@ -308,7 +315,7 @@ check_and_cleanup_lvs_
prepare_lvs_
lvchange -an $vg/$lv1
lvchange -an $vg/$lv3
pvmove -i1 $dev2 $dev5
pvmove -i0 $dev2 $dev5
lv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3
lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4
lv_is_on_ $vg/$lv3 $dev5
@ -319,8 +326,8 @@ check_and_cleanup_lvs_
#COMM "no PEs to move: from pv3 to pv1"
prepare_lvs_
pvmove -i1 $dev3 $dev1
not pvmove -i1 $dev3 $dev1
pvmove -i0 $dev3 $dev1
not pvmove -i0 $dev3 $dev1
# "(cleanup previous test)"
lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev1
lv_is_on_ $vg/$lv2 $dev2 $dev1 $dev4
@ -329,7 +336,7 @@ check_and_cleanup_lvs_
#COMM "no space available: from pv2:0-0 to pv1:0-0"
prepare_lvs_
not pvmove -i1 $dev2:0-0 $dev1:0-0
not pvmove -i0 $dev2:0-0 $dev1:0-0
# "(cleanup previous test)"
lv_not_changed_ $vg/$lv1
lv_not_changed_ $vg/$lv2
@ -338,7 +345,7 @@ check_and_cleanup_lvs_
#COMM 'same source and destination: from pv1 to pv1'
prepare_lvs_
not pvmove -i1 $dev1 $dev1
not pvmove -i0 $dev1 $dev1
#"(cleanup previous test)"
lv_not_changed_ $vg/$lv1
lv_not_changed_ $vg/$lv2
@ -367,7 +374,7 @@ check_and_cleanup_lvs_
vgremove -ff $vg
pvcreate $(cat DEVICES)
pvcreate --metadatacopies 0 $dev1 $dev2
vgcreate -c n $vg $(cat DEVICES)
create_vg_
lvcreate -l4 -n $lv1 $vg $dev1
pvmove $dev1

View File

@ -17,7 +17,11 @@ COMM() {
LAST_TEST="$@"
}
aux prepare_pvs 5 258
create_vg_() {
vgcreate -c n -s 64k "$@"
}
aux prepare_pvs 5 10
# FIXME: paramaterize lvm1 vs lvm2 metadata; most of these tests should run
# fine with lvm1 metadata as well; for now, just add disks 5 and 6 as lvm1
# metadata
@ -33,10 +37,9 @@ do
for j in PV LV
do
COMM "vgsplit correctly splits single linear LV into $i VG ($j args)"
vgcreate $vg1 $dev1 $dev2
if [ $i = existing ]; then
vgcreate $vg2 $dev3 $dev4
fi
create_vg_ $vg1 $dev1 $dev2
test $i = existing && create_vg_ $vg2 $dev3 $dev4
lvcreate -l 4 -n $lv1 $vg1 $dev1
vgchange -an $vg1
if [ $j = PV ]; then
@ -51,14 +54,12 @@ COMM "vgsplit correctly splits single linear LV into $i VG ($j args)"
check pvlv_counts $vg2 1 1 0
fi
lvremove -f $vg2/$lv1
vgremove -f $vg2
vgremove -f $vg1
vgremove -f $vg2 $vg1
COMM "vgsplit correctly splits single striped LV into $i VG ($j args)"
vgcreate $vg1 $dev1 $dev2
if [ $i = existing ]; then
vgcreate $vg2 $dev3 $dev4
fi
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
if [ $j = PV ]; then
@ -75,10 +76,9 @@ COMM "vgsplit correctly splits single striped LV into $i VG ($j args)"
vgremove -f $vg2
COMM "vgsplit correctly splits mirror LV into $i VG ($j args)"
vgcreate -c n $vg1 $dev1 $dev2 $dev3
if [ $i = existing ]; then
vgcreate -c n $vg2 $dev4
fi
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
if [ $j = PV ]; then
@ -96,10 +96,8 @@ COMM "vgsplit correctly splits mirror LV into $i VG ($j args)"
# FIXME: ensure split /doesn't/ work when not all devs of mirror specified
COMM "vgsplit correctly splits mirror LV with mirrored log into $i VG ($j args)"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
if [ $i = existing ]; then
vgcreate -c n $vg2 $dev5
fi
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
test $i = existing && create_vg_ $vg2 $dev5
lvcreate -l 64 --mirrorlog mirrored -m1 -n $lv1 $vg1 \
$dev1 $dev2 $dev3 $dev4
@ -120,10 +118,9 @@ COMM "vgsplit correctly splits mirror LV with mirrored log into $i VG ($j args)"
# FIXME: ensure split /doesn't/ work when not all devs of mirror specified
COMM "vgsplit correctly splits origin and snapshot LV into $i VG ($j args)"
vgcreate -c n $vg1 $dev1 $dev2
if [ $i = existing ]; then
vgcreate -c n $vg2 $dev3 $dev4
fi
create_vg_ $vg1 $dev1 $dev2
test $i = existing && create_vg_ $vg2 $dev3 $dev4
lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
vgchange -an $vg1
@ -142,10 +139,9 @@ COMM "vgsplit correctly splits origin and snapshot LV into $i VG ($j args)"
vgremove -f $vg2
COMM "vgsplit correctly splits linear LV but not snap+origin LV into $i VG ($j args)"
vgcreate -c n $vg1 $dev1 $dev2
if [ $i = existing ]; then
vgcreate -c n $vg2 $dev3
fi
create_vg_ $vg1 $dev1 $dev2
test $i = existing && create_vg_ $vg2 $dev3
lvcreate -l 64 -i 2 -n $lv1 $vg1
lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1
vgextend $vg1 $dev4
@ -164,23 +160,17 @@ COMM "vgsplit correctly splits linear LV but not snap+origin LV into $i VG ($j a
check pvlv_counts $vg1 2 2 1
fi
lvremove -f $vg1/$lv2
lvremove -f $vg1/$lv1
lvremove -f $vg2/$lv3
vgremove -f $vg1
vgremove -f $vg2
lvremove -f $vg1/$lv1 $vg2/$lv3
vgremove -f $vg1 $vg2
COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)"
vgcreate -c n $vg1 $dev1 $dev2 $dev3
if [ $i = existing ]; then
vgcreate -c n $vg2 $dev5
fi
create_vg_ $vg1 $dev1 $dev2 $dev3
test $i = existing && create_vg_ $vg2 $dev5
lvcreate -l 64 -m1 -n $lv1 $vg1 $dev1 $dev2 $dev3
vgextend $vg1 $dev4
lvcreate -l 64 -n $lv2 $vg1 $dev4
vgchange -an $vg1
vgs
lvs
pvs
if [ $j = PV ]; then
vgsplit $vg1 $vg2 $dev4
else
@ -190,16 +180,11 @@ COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)"
check pvlv_counts $vg1 3 1 0
check pvlv_counts $vg2 2 1 0
else
vgs
lvs
pvs
check pvlv_counts $vg1 3 1 0
check pvlv_counts $vg2 1 1 0
fi
lvremove -f $vg1/$lv1
lvremove -f $vg2/$lv2
vgremove -f $vg1
vgremove -f $vg2
lvremove -f $vg1/$lv1 $vg2/$lv2
vgremove -f $vg1 $vg2
done
done
@ -209,7 +194,7 @@ done
# LVs to split the VG correctly
#
COMM "vgsplit fails splitting 3 striped LVs into VG when only 1 LV specified"
vgcreate $vg1 $dev1 $dev2 $dev3 $dev4
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
@ -218,33 +203,31 @@ not vgsplit -n $lv1 $vg1 $vg2
vgremove -ff $vg1
COMM "vgsplit fails splitting one LV with 2 snapshots, only origin LV specified"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
lvcreate -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
vgchange -an $vg1
not vgsplit -n $lv1 $vg1 $vg2;
lvremove -f $vg1/$lv2
lvremove -f $vg1/$lv3
lvremove -f $vg1/$lv2 $vg1/$lv3
lvremove -f $vg1/$lv1
vgremove -ff $vg1
COMM "vgsplit fails splitting one LV with 2 snapshots, only snapshot LV specified"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
lvcreate -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
vgchange -an $vg1
not vgsplit -n $lv2 $vg1 $vg2
lvremove -f $vg1/$lv2
lvremove -f $vg1/$lv3
lvremove -f $vg1/$lv2 $vg1/$lv3
lvremove -f $vg1/$lv1
vgremove -ff $vg1
COMM "vgsplit fails splitting one mirror LV, only one PV specified"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3
check pvlv_counts $vg1 4 1 0
vgchange -an $vg1
@ -252,7 +235,7 @@ not vgsplit $vg1 $vg2 $dev2
vgremove -ff $vg1
COMM "vgsplit fails splitting 1 mirror + 1 striped LV, only striped LV specified"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
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
check pvlv_counts $vg1 4 2 0
@ -264,7 +247,7 @@ vgremove -ff $vg1
# Verify vgsplit rejects active LVs only when active LVs involved in split
#
COMM "vgsplit fails, active mirror involved in split"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3
lvcreate -l 16 -n $lv2 $vg1 $dev4
lvchange -an $vg1/$lv2
@ -274,7 +257,7 @@ check pvlv_counts $vg1 4 2 0
vgremove -ff $vg1
COMM "vgsplit succeeds, active mirror not involved in split"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3
lvcreate -l 16 -n $lv2 $vg1 $dev4
lvchange -an $vg1/$lv2
@ -282,11 +265,10 @@ check pvlv_counts $vg1 4 2 0
vgsplit -n $lv2 $vg1 $vg2
check pvlv_counts $vg1 3 1 0
check pvlv_counts $vg2 1 1 0
vgremove -ff $vg1
vgremove -ff $vg2
vgremove -ff $vg1 $vg2
COMM "vgsplit fails, active snapshot involved in split"
vgcreate -c n $vg1 $dev1 $dev2 $dev3 $dev4
create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4
lvcreate -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
@ -298,7 +280,7 @@ lvremove -f $vg1/$lv2
vgremove -ff $vg1
COMM "vgsplit succeeds, active snapshot not involved in split"
vgcreate -c n $vg1 $dev1 $dev2 $dev3
create_vg_ $vg1 $dev1 $dev2 $dev3
lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2
lvcreate -l 4 -s -n $lv2 $vg1/$lv1
vgextend $vg1 $dev4
@ -310,6 +292,4 @@ check pvlv_counts $vg1 3 2 1
check pvlv_counts $vg2 1 1 0
vgchange -an $vg1
lvremove -f $vg1/$lv2
vgremove -ff $vg1
vgremove -ff $vg2
vgremove -ff $vg1 $vg2