From bb2f87d471e086517d68965e5d4be95569a445d3 Mon Sep 17 00:00:00 2001 From: "Lance R. Vick" Date: Wed, 30 Apr 2025 00:24:52 -0700 Subject: [PATCH] fix: netvm start edge case handling --- src/host/rootfs/usr/local/bin/netvm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/host/rootfs/usr/local/bin/netvm b/src/host/rootfs/usr/local/bin/netvm index ce747c7..8757168 100755 --- a/src/host/rootfs/usr/local/bin/netvm +++ b/src/host/rootfs/usr/local/bin/netvm @@ -61,10 +61,11 @@ function cmd_start(){ [ ! -f "${LOCKFILE}" ] || { echo "Error: Netvm already running"; exit 1; } local net_args="" while read line; do + [ -n "$line" ] || break echo "Preparing PCI network device: $line" bus=$(echo $line | awk '{ print $1 }') id=$(echo $line | awk '{ print $4 }' | tr ':' ' ') - echo "$id" > /sys/bus/pci/drivers/vfio-pci/new_id || : + echo "$id" > /sys/bus/pci/drivers/vfio-pci/new_id 2>&1 || : net_args="$net_args -device vfio-pci,host=${bus}" done <<< "$(lspci | grep 0200 )" if [[ -n "$net_args" ]]; then @@ -80,14 +81,15 @@ function cmd_start(){ -net none \ -cdrom /guest.img \ -boot order=d \ - -chardev socket,path=/var/run/netvm_qga.sock,server=on,wait=off,id=qga0 \ + -chardev socket,path=${QGA_SOCKET},server=on,wait=off,id=qga0 \ $net_args \ -device qemu-xhci \ -device virtio-serial \ -device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 & pid=$! echo "$pid" > "${LOCKFILE}" - until qemu_ga guest-ping; do + until [ -S "${QGA_SOCKET}" ]; do sleep 1; done + until qemu_ga guest-ping "{}"; do ps -p $pid >/dev/null || { echo "Error: netvm exited unexpectedly"; exit 1; @@ -95,6 +97,7 @@ function cmd_start(){ } sleep 1 done + echo "NetVM is booted" } function cmd_stop(){