]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-64-udev-storage: use wait command instead of hackish "udevadm lock true" 24865/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 29 Sep 2022 17:38:22 +0000 (02:38 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 29 Sep 2022 18:42:05 +0000 (03:42 +0900)
Otherwise, "udevadm lock true" may lock a block device earlier than
"udevadm lock sfdisk &".

test/units/testsuite-64.sh

index 0d4c4ff776b20cdbc4bb210a52ebc42adad1ba23..df92a0bb43a3a4a5bb11b2a08a0f7f47020dbc87 100755 (executable)
@@ -289,8 +289,9 @@ EOF
 }
 
 testcase_simultaneous_events() {
-    local disk expected i iterations link num_part part partscript rule target timeout
+    local disk expected i iterations key link num_part part partscript rule target timeout
     local -a devices symlinks
+    local -A running
 
     if [[ -n "${ASAN_OPTIONS:-}" ]] || [[ "$(systemd-detect-virt -v)" == "qemu" ]]; then
         num_part=2
@@ -346,11 +347,12 @@ EOF
             else
                 udevadm lock --device="${devices[$disk]}" sfdisk -q -X gpt "${devices[$disk]}" <"$partscript" &
             fi
+            running[$disk]=$!
         done
 
-        # Wait for the above sfdisk commands to be finished.
-        for disk in {0..9}; do
-            udevadm lock --device="${devices[$disk]}" true
+        for key in "${!running[@]}"; do
+            wait "${running[$key]}"
+            unset "running[$key]"
         done
 
         if ((i % 10 <= 1)); then