]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-50-dissect: wait for and lock loop block partition devices 24471/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 27 Aug 2022 07:13:27 +0000 (16:13 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 29 Aug 2022 04:44:42 +0000 (13:44 +0900)
test/units/testsuite-50.sh

index 42c311be26bedc9e101c63d81958089ba618a702..e4204fcdc2a5d55af917ab75e4dbab894fbe4b13 100755 (executable)
@@ -189,11 +189,20 @@ if [ "${HAVE_OPENSSL}" -eq 1 ]; then
     sfdisk --part-label "${image}.gpt" 3 "Signature Partition"
 fi
 loop="$(losetup --show -P -f "${image}.gpt")"
-udevadm wait --timeout 60 --settle "${loop:?}"
-dd if="${image}.raw" of="${loop}p1"
-dd if="${image}.verity" of="${loop}p2"
+partitions=(
+    "${loop:?}p1"
+    "${loop:?}p2"
+)
 if [ "${HAVE_OPENSSL}" -eq 1 ]; then
-    dd if="${image}.verity-sig" of="${loop}p3"
+    partitions+=( "${loop:?}p3" )
+fi
+# The kernel sometimes(?) does not emit "add" uevent for loop block partition devices.
+# Let's not expect the devices to be initialized.
+udevadm wait --timeout 60 --settle --initialized=no "${partitions[@]}"
+udevadm lock --device="${loop}p1" dd if="${image}.raw" of="${loop}p1"
+udevadm lock --device="${loop}p2" dd if="${image}.verity" of="${loop}p2"
+if [ "${HAVE_OPENSSL}" -eq 1 ]; then
+    udevadm lock --device="${loop}p3" dd if="${image}.verity-sig" of="${loop}p3"
 fi
 losetup -d "${loop}"