testing: Add delay after qemu-nbd -c

Seems that there is a delay before the disk can be used when using newer
QEMU versions (e.g. on Debian trixie). We get errors like these:

  sfdisk: cannot open /dev/nbd0: Inappropriate ioctl for device

or

  mount: /srv/strongswan-testing/build/loop: special device /dev/nbd0p1 does not exist.

A sleep before the next command seems to help.

Also see [1].

[1] https://gitlab.com/qemu-project/qemu/-/issues/1413
This commit is contained in:
Tobias Brunner
2025-09-18 11:13:32 +02:00
parent e9ebe49d44
commit 1043fa32de
5 changed files with 11 additions and 0 deletions
+3
View File
@@ -78,6 +78,9 @@ log_action "Connecting image to NBD device $NBDEV"
execute "qemu-nbd -c $NBDEV $BASEIMG"
do_on_exit qemu-nbd -d $NBDEV
# wait for disk to become ready with newer QEMU versions
sleep 1
log_action "Partitioning disk"
sfdisk /dev/nbd0 >>$LOGFILE 2>&1 << EOF
;
+2
View File
@@ -22,6 +22,8 @@ mkdir -p $IMGDIR
log_action "Connecting root image to NBD device $NBDEV"
execute "qemu-nbd -c $NBDEV $ROOTIMG"
do_on_exit qemu-nbd -d $NBDEV
# wait for disk to become ready with newer QEMU versions
sleep 1
blockdev --rereadpt $NBDEV
log_action "Mounting $NBDPARTITION to $LOOPDIR"
+2
View File
@@ -44,6 +44,8 @@ do
log_action "Creating guest image for $host"
execute "qemu-img create -b $ROOTIMG -f $IMGEXT -F $IMGEXT $IMGDIR/$host.$IMGEXT" 0
execute "qemu-nbd -c $NBDEV $IMGDIR/$host.$IMGEXT" 0
# wait for disk to become ready with newer QEMU versions
sleep 1
blockdev --rereadpt $NBDEV
execute "mount $NBDPARTITION $LOOPDIR" 0
execute "mount -t proc none $LOOPDIR/proc" 0
+2
View File
@@ -115,6 +115,8 @@ case "$GUEST" in
esac
do_on_exit qemu-nbd -d $NBDEV
# wait for disk to become ready with newer QEMU versions
sleep 1
blockdev --rereadpt $NBDEV
log_action "Mounting $NBDPARTITION to $LOOPDIR"
+2
View File
@@ -42,6 +42,8 @@ root)
esac
do_on_exit qemu-nbd -d $NBDEV
# wait for disk to become ready with newer QEMU versions
sleep 1
blockdev --rereadpt $NBDEV
log_action "Mounting $NBDPARTITION to $LOOPDIR"