fix: netvm start edge case handling

This commit is contained in:
Lance Vick 2025-04-30 00:24:52 -07:00
parent b980eb3a97
commit bb2f87d471
Signed by: lrvick
GPG Key ID: 8E47A1EC35A1551D
1 changed files with 6 additions and 3 deletions

View File

@ -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(){