From 1a0e065e9f154f46fd68cd45f46310bc7df7a51c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 26 Aug 2022 06:33:49 +0900 Subject: [PATCH] test: wait for loop device to be removed Follow-up for bca762ce1abafd24016eba7310fdd38c758419f8. Fixes #24450. --- test/units/testsuite-50.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/units/testsuite-50.sh b/test/units/testsuite-50.sh index 6170c8ab63f..d91eeaabe82 100755 --- a/test/units/testsuite-50.sh +++ b/test/units/testsuite-50.sh @@ -187,6 +187,7 @@ if [ "${HAVE_OPENSSL}" -eq 1 ]; then sfdisk --part-label "${image}.gpt" 3 "Signature Partition" fi loop="$(losetup --show -P -f "${image}.gpt")" +# kernel sometimes(?) does not emit add uevent for partitions, let's wait for the whole block device. udevadm wait --timeout 60 --settle "${loop:?}" dd if="${image}.raw" of="${loop}p1" dd if="${image}.verity" of="${loop}p2" @@ -194,6 +195,11 @@ if [ "${HAVE_OPENSSL}" -eq 1 ]; then dd if="${image}.verity-sig" of="${loop}p3" fi losetup -d "${loop}" +# Interestingly, kernel does not emit remove uevent for the whole block device, but does for partitions. +udevadm wait --timeout 60 --settle --removed "${loop}p1" "${loop}p2" +if [ "${HAVE_OPENSSL}" -eq 1 ]; then + udevadm wait --timeout 60 --settle --removed "${loop}p3" +fi # Derive partition UUIDs from root hash, in UUID syntax ROOT_UUID="$(systemd-id128 -u show "$(head -c 32 "${image}.roothash")" -u | tail -n 1 | cut -b 6-)" -- 2.47.3