1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-10 16:58:47 +03:00

tests: aux.sh better teardown loop

We can't really sleep that much in teardown as it slows test too much.
So do a nested loop (similar to 'dmsetup remove_all') and keep
removing devices with open count == 0 as long as it works.
This commit is contained in:
Zdenek Kabelac 2017-07-14 00:27:55 +02:00
parent f64f6c5e70
commit e682af7878

View File

@ -411,18 +411,23 @@ teardown_devs_prefixed() {
# Remove devices, start with closed (sorted by open count)
# Run 'dmsetup remove' in parallel
local need_udev_wait=0
rm -f REMOVE_FAILED
#local listdevs=( $(dm_info name,open --sort open,name | grep "$prefix.*:0") )
#dmsetup remove --deferred ${listdevs[@]%%:0} || touch REMOVE_FAILED
for i in {1..100}; do
local need_udev_wait=0
local cnt
while IFS=' ' read -r dm cnt; do
test "$cnt" -eq 0 || break
dmsetup remove "$dm" &>/dev/null || touch REMOVE_FAILED &
need_udev_wait=1
done < <(dm_info name,open --separator ' ' --sort open,name | grep "$prefix")
test "$need_udev_wait" -eq 1 || break
udev_wait
test -f REMOVE_FAILED && break
done # looping till there are some removed devicess
for dm in $(dm_info name --sort open,name | grep "$prefix"); do
dmsetup remove "$dm" &>/dev/null || touch REMOVE_FAILED &
need_udev_wait=1
sleep 1 # give 'dmsetup' some time to proceed with removal
done
wait
test "$need_udev_wait" -eq 0 || udev_wait
if test -f REMOVE_FAILED; then
local num_devs