1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

test: New test file for validating kernel status during sync ops

New tests to add checking for '100%' in-sync at start of "recover"
process (it shouldn't happen, but I've seen it before).  Also,
check status over the whole cycle of various sync processes ("resync"
and "recover").
This commit is contained in:
Jonathan Brassow 2017-06-16 10:11:58 -05:00
parent dd866a67f4
commit 915d20d0e6

View File

@ -20,7 +20,7 @@ vgcreate -s 2m $vg $(cat DEVICES)
###########################################
# Upconverted RAID1 should never have all 'a's in status output
###########################################
aux delay_dev $dev2 0 100
aux delay_dev $dev2 0 50
lvcreate -aey -l 2 -n $lv1 $vg $dev1
lvconvert --type raid1 -y -m 1 $vg/$lv1 $dev2
while ! check in_sync $vg $lv1; do
@ -31,4 +31,97 @@ done
aux enable_dev $dev2
lvremove -ff $vg
###########################################
# Upconverted RAID1 should not be at 100% right after upconvert
###########################################
aux delay_dev $dev2 0 50
lvcreate -aey -l 2 -n $lv1 $vg $dev1
lvconvert --type raid1 -y -m 1 $vg/$lv1 $dev2
a=( $(dmsetup status $vg-$lv1) ) || die "Unable to get status of $vg/$lv1"
b=( $(echo ${a[6]} | sed s:/:' ':) )
[ ${b[0]} -ne ${b[1]} ]
aux enable_dev $dev2
lvremove -ff $vg
###########################################
# Catch anything suspicious with linear -> RAID1 upconvert
###########################################
aux delay_dev $dev2 0 50
lvcreate -aey -l 2 -n $lv1 $vg $dev1
lvconvert --type raid1 -y -m 1 $vg/$lv1 $dev2
while true; do
a=( $(dmsetup status $vg-$lv1) ) || die "Unable to get status of $vg/$lv1"
b=( $(echo ${a[6]} | sed s:/:' ':) )
if [ ${b[0]} -ne ${b[1]} ]; then
# If the sync operation ("recover" in this case) is not
# finished, then it better be as follows:
[ ${a[5]} == "Aa" ]
[ ${a[7]} == "recover" ]
else
# Tough to tell the INVALID case,
# Before starting sync thread: "Aa X/X recover"
# from the valid case,
# Just finished sync thread: "Aa X/X recover"
# We'll just put "should" for now
should [ ${a[5]} == "AA" ]
should [ ${a[7]} == "idle" ]
break
fi
sleep .1
done
aux enable_dev $dev2
lvremove -ff $vg
###########################################
# Catch anything suspicious with RAID1 2-way -> 3-way upconvert
###########################################
aux delay_dev $dev3 0 50
lvcreate --type raid1 -m 1 -aey -l 2 -n $lv1 $vg $dev1 $dev2
lvconvert -y -m +1 $vg/$lv1 $dev3
while true; do
a=( $(dmsetup status $vg-$lv1) ) || die "Unable to get status of $vg/$lv1"
b=( $(echo ${a[6]} | sed s:/:' ':) )
if [ ${b[0]} -ne ${b[1]} ]; then
# If the sync operation ("recover" in this case) is not
# finished, then it better be as follows:
[ ${a[5]} == "AAa" ]
[ ${a[7]} == "recover" ]
else
# Tough to tell the INVALID case,
# Before starting sync thread: "Aa X/X recover"
# from the valid case,
# Just finished sync thread: "Aa X/X recover"
# We'll just put "should" for now
should [ ${a[5]} == "AAA" ]
should [ ${a[7]} == "idle" ]
break
fi
sleep .1
done
aux enable_dev $dev3
lvremove -ff $vg
###########################################
# Catch anything suspicious with RAID1 initial resync
###########################################
aux delay_dev $dev2 0 50
lvcreate --type raid1 -m 1 -aey -l 2 -n $lv1 $vg $dev1 $dev2
while true; do
a=( $(dmsetup status $vg-$lv1) ) || die "Unable to get status of $vg/$lv1"
b=( $(echo ${a[6]} | sed s:/:' ':) )
if [ ${b[0]} -ne ${b[1]} ]; then
# If the sync operation ("resync" in this case) is not
# finished, then it better be as follows:
[ ${a[5]} == "aa" ]
[ ${a[7]} == "resync" ]
else
should [ ${a[5]} == "AA" ]
should [ ${a[7]} == "idle" ]
break
fi
sleep .1
done
aux enable_dev $dev2
lvremove -ff $vg
vgremove -ff $vg