1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-11 20:58:50 +03:00

tests: handle multiple devs with wait_pvmove_lv_ready

aux wait_pvmove_lv_ready() now handles multiple pvmove LVs
at one go - which allows a bit fast checking - although
at some point we may need to switch to use delayed devs
since mirror throttling seems to be no longer working well,
as CPU are getting so fast, that most of data are already
pvmoved before throttling has any chance to do something...
This commit is contained in:
Zdenek Kabelac 2023-04-24 15:24:20 +02:00
parent 8476a09ee5
commit b8aea8ae7d
3 changed files with 27 additions and 31 deletions

View File

@ -1994,37 +1994,36 @@ check_lvmpolld_init_rq_count() {
wait_pvmove_lv_ready() { wait_pvmove_lv_ready() {
# given sleep .1 this is about 20 secs of waiting # given sleep .1 this is about 20 secs of waiting
local retries=${2-100} local lvid=()
local all
for i in {100..0}; do
if [ -e LOCAL_LVMPOLLD ]; then if [ -e LOCAL_LVMPOLLD ]; then
local lvid="" if test "${#lvid[@]}" -eq "$#" ; then
while : ; do
test "$retries" -le 0 && die "Waiting for lvmpolld timed out"
test -n "$lvid" || {
# wait till wanted LV really appears
lvid=$(dmsetup info --noheadings -c -o uuid "$1" 2>/dev/null || true)
lvid=${lvid##LVM-}
}
test -z "$lvid" || {
lvmpolld_dump > lvmpolld_dump.txt lvmpolld_dump > lvmpolld_dump.txt
check_lvmpolld_init_rq_count 1 "$lvid" lvid && break; all=1
} for l in "${lvid[@]}" ; do
sleep .1 check_lvmpolld_init_rq_count 1 "${l##LVM-}" lvid || all=0
retries=$((retries-1))
done done
test "$all" = 1 && return
else else
while : ; do # wait till wanted LV really appears
test "$retries" -le 0 && die "Waiting for pvmove LV to get activated has timed out" lvid=( $(dmsetup info --noheadings -c -o uuid "$@" 2>/dev/null) ) || true
dmsetup info -c -o tables_loaded "$1" >out 2>/dev/null|| true;
not grep Live out >/dev/null || break
sleep .1
retries=$((retries-1))
done
fi fi
else
dmsetup info -c --noheadings -o tables_loaded "$@" >out 2>/dev/null || true
test "$(grep -c Live out)" = "$#" && return
fi
sleep .1
done
test -e LOCAL_LVMPOLLD && die "Waiting for lvmpolld timed out"
die "Waiting for pvmove LV to get activated has timed out"
# TODO: remove, uneedeed ??
# Adding settle here, to avoid remove, before processing of 'add' is finished # Adding settle here, to avoid remove, before processing of 'add' is finished
# (masking systemd-udevd issue) # (masking systemd-udevd issue)
udevadm settle --timeout=2 || true #udev_wait 2 || true
} }
# Holds device open with sleep which automatically expires after given timeout # Holds device open with sleep which automatically expires after given timeout

View File

@ -53,11 +53,9 @@ cmd3=(pvmove -i1 $backgroundarg $mode -n $vg1/$lv1 "$dev4" "$dev6")
if test -z "$backgroundarg" ; then if test -z "$backgroundarg" ; then
"${cmd1[@]}" & "${cmd1[@]}" &
aux wait_pvmove_lv_ready "$vg-pvmove0"
"${cmd2[@]}" & "${cmd2[@]}" &
aux wait_pvmove_lv_ready "$vg-pvmove1"
"${cmd3[@]}" & "${cmd3[@]}" &
aux wait_pvmove_lv_ready "$vg1-pvmove0" aux wait_pvmove_lv_ready "$vg-pvmove0" "$vg-pvmove1" "$vg1-pvmove0"
lvs -a $vg $vg1 lvs -a $vg $vg1
else else
LVM_TEST_TAG="kill_me_$PREFIX" "${cmd1[@]}" LVM_TEST_TAG="kill_me_$PREFIX" "${cmd1[@]}"

View File

@ -42,9 +42,8 @@ cmd2=(pvmove -i1 $backgroundarg $mode "$dev2" "$dev3")
if test -z "$backgroundarg" ; then if test -z "$backgroundarg" ; then
"${cmd1[@]}" & "${cmd1[@]}" &
aux wait_pvmove_lv_ready "$vg-pvmove0"
"${cmd2[@]}" & "${cmd2[@]}" &
aux wait_pvmove_lv_ready "$vg-pvmove1" aux wait_pvmove_lv_ready "$vg-pvmove0" "$vg-pvmove1"
else else
LVM_TEST_TAG="kill_me_$PREFIX" "${cmd1[@]}" LVM_TEST_TAG="kill_me_$PREFIX" "${cmd1[@]}"
LVM_TEST_TAG="kill_me_$PREFIX" "${cmd2[@]}" LVM_TEST_TAG="kill_me_$PREFIX" "${cmd2[@]}"