[lvm-devel] master - tests: aux.sh better teardown loop

Zdenek Kabelac zkabelac at sourceware.org
Thu Jul 13 22:44:32 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=e682af78789b34bbcb1706c16f629dfd93915bf9
Commit:        e682af78789b34bbcb1706c16f629dfd93915bf9
Parent:        f64f6c5e703e6d3632acf68fa353b71f452bbfc7
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Jul 14 00:27:55 2017 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Jul 14 00:27:55 2017 +0200

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.
---
 test/lib/aux.sh |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 9e0ca2c..de2e2ac 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -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




More information about the lvm-devel mailing list