mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +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:
parent
8476a09ee5
commit
b8aea8ae7d
@ -1994,37 +1994,36 @@ check_lvmpolld_init_rq_count() {
|
||||
|
||||
wait_pvmove_lv_ready() {
|
||||
# given sleep .1 this is about 20 secs of waiting
|
||||
local retries=${2-100}
|
||||
local lvid=()
|
||||
local all
|
||||
|
||||
if [ -e LOCAL_LVMPOLLD ]; then
|
||||
local lvid=""
|
||||
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" || {
|
||||
for i in {100..0}; do
|
||||
if [ -e LOCAL_LVMPOLLD ]; then
|
||||
if test "${#lvid[@]}" -eq "$#" ; then
|
||||
lvmpolld_dump > lvmpolld_dump.txt
|
||||
check_lvmpolld_init_rq_count 1 "$lvid" lvid && break;
|
||||
}
|
||||
sleep .1
|
||||
retries=$((retries-1))
|
||||
done
|
||||
else
|
||||
while : ; do
|
||||
test "$retries" -le 0 && die "Waiting for pvmove LV to get activated has timed out"
|
||||
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
|
||||
all=1
|
||||
for l in "${lvid[@]}" ; do
|
||||
check_lvmpolld_init_rq_count 1 "${l##LVM-}" lvid || all=0
|
||||
done
|
||||
test "$all" = 1 && return
|
||||
else
|
||||
# wait till wanted LV really appears
|
||||
lvid=( $(dmsetup info --noheadings -c -o uuid "$@" 2>/dev/null) ) || true
|
||||
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
|
||||
# (masking systemd-udevd issue)
|
||||
udevadm settle --timeout=2 || true
|
||||
#udev_wait 2 || true
|
||||
}
|
||||
|
||||
# Holds device open with sleep which automatically expires after given timeout
|
||||
|
@ -53,11 +53,9 @@ cmd3=(pvmove -i1 $backgroundarg $mode -n $vg1/$lv1 "$dev4" "$dev6")
|
||||
|
||||
if test -z "$backgroundarg" ; then
|
||||
"${cmd1[@]}" &
|
||||
aux wait_pvmove_lv_ready "$vg-pvmove0"
|
||||
"${cmd2[@]}" &
|
||||
aux wait_pvmove_lv_ready "$vg-pvmove1"
|
||||
"${cmd3[@]}" &
|
||||
aux wait_pvmove_lv_ready "$vg1-pvmove0"
|
||||
aux wait_pvmove_lv_ready "$vg-pvmove0" "$vg-pvmove1" "$vg1-pvmove0"
|
||||
lvs -a $vg $vg1
|
||||
else
|
||||
LVM_TEST_TAG="kill_me_$PREFIX" "${cmd1[@]}"
|
||||
|
@ -42,9 +42,8 @@ cmd2=(pvmove -i1 $backgroundarg $mode "$dev2" "$dev3")
|
||||
|
||||
if test -z "$backgroundarg" ; then
|
||||
"${cmd1[@]}" &
|
||||
aux wait_pvmove_lv_ready "$vg-pvmove0"
|
||||
"${cmd2[@]}" &
|
||||
aux wait_pvmove_lv_ready "$vg-pvmove1"
|
||||
aux wait_pvmove_lv_ready "$vg-pvmove0" "$vg-pvmove1"
|
||||
else
|
||||
LVM_TEST_TAG="kill_me_$PREFIX" "${cmd1[@]}"
|
||||
LVM_TEST_TAG="kill_me_$PREFIX" "${cmd2[@]}"
|
||||
|
Loading…
Reference in New Issue
Block a user