fix: netvm start edge case handling
This commit is contained in:
parent
b980eb3a97
commit
bb2f87d471
|
@ -61,10 +61,11 @@ function cmd_start(){
|
||||||
[ ! -f "${LOCKFILE}" ] || { echo "Error: Netvm already running"; exit 1; }
|
[ ! -f "${LOCKFILE}" ] || { echo "Error: Netvm already running"; exit 1; }
|
||||||
local net_args=""
|
local net_args=""
|
||||||
while read line; do
|
while read line; do
|
||||||
|
[ -n "$line" ] || break
|
||||||
echo "Preparing PCI network device: $line"
|
echo "Preparing PCI network device: $line"
|
||||||
bus=$(echo $line | awk '{ print $1 }')
|
bus=$(echo $line | awk '{ print $1 }')
|
||||||
id=$(echo $line | awk '{ print $4 }' | tr ':' ' ')
|
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}"
|
net_args="$net_args -device vfio-pci,host=${bus}"
|
||||||
done <<< "$(lspci | grep 0200 )"
|
done <<< "$(lspci | grep 0200 )"
|
||||||
if [[ -n "$net_args" ]]; then
|
if [[ -n "$net_args" ]]; then
|
||||||
|
@ -80,14 +81,15 @@ function cmd_start(){
|
||||||
-net none \
|
-net none \
|
||||||
-cdrom /guest.img \
|
-cdrom /guest.img \
|
||||||
-boot order=d \
|
-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 \
|
$net_args \
|
||||||
-device qemu-xhci \
|
-device qemu-xhci \
|
||||||
-device virtio-serial \
|
-device virtio-serial \
|
||||||
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 &
|
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 &
|
||||||
pid=$!
|
pid=$!
|
||||||
echo "$pid" > "${LOCKFILE}"
|
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 || {
|
ps -p $pid >/dev/null || {
|
||||||
echo "Error: netvm exited unexpectedly";
|
echo "Error: netvm exited unexpectedly";
|
||||||
exit 1;
|
exit 1;
|
||||||
|
@ -95,6 +97,7 @@ function cmd_start(){
|
||||||
}
|
}
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
echo "NetVM is booted"
|
||||||
}
|
}
|
||||||
|
|
||||||
function cmd_stop(){
|
function cmd_stop(){
|
||||||
|
|
Loading…
Reference in New Issue