From: Ian Campbell Date: Fri, 21 Nov 2014 11:27:45 +0000 (+0000) Subject: Start a qemu process in dom0 to service the toolstacks loopback disk attaches. X-Git-Tag: archive/raspbian/4.8.1-1+rpi1+deb9u1~1^2~52 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8ad8a8221d9884b76f6942acabd9465e11ca23bd;p=xen.git Start a qemu process in dom0 to service the toolstacks loopback disk attaches. This is used to e.g. run pygrub on a VM with a qcow2 disk image. (Closes: #770456) Also, remove correct pidfile when stopping xenconsoled. (cherry picked from commit fcdd6e3c9596e900748e93ae3be4e6a3dc278f26) (from alioth alioth/feature/bug770456) Signed-off-by: Ian Jackson --- diff --git a/debian/changelog b/debian/changelog index f5ce033379..ffd5da5fe6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,11 @@ xen (4.8.0~rc5-2~) unstable; urgency=medium * Drop -lcrypto search from upstream configure, and from our Build-Depends. Closes:#844419. + [ Ian Campbell ] + * Start a qemu process in dom0 to service the toolstacks loopback disk + attaches. (Closes: #770456) + * Remove correct pidfile when stopping xenconsoled. + -- xen (4.8.0~rc5-1) unstable; urgency=medium diff --git a/debian/xen-utils-common.xen.init b/debian/xen-utils-common.xen.init index fe5d6f3453..252ddc0e44 100644 --- a/debian/xen-utils-common.xen.init +++ b/debian/xen-utils-common.xen.init @@ -37,6 +37,9 @@ XENCONSOLED="$ROOT"/bin/xenconsoled XENCONSOLED_PIDFILE="/var/run/xenconsoled.pid" XENSTORED="$ROOT"/bin/xenstored XENSTORED_PIDFILE="/var/run/xenstore.pid" +QEMU=/usr/bin/qemu-system-i386 +QEMU_PIDFILE="/var/run/qemu-dom0.pid" +QEMU_ARGS="-xen-domid 0 -xen-attach -name dom0 -nographic -M xenpv -daemonize -monitor /dev/null -serial /dev/null -parallel /dev/null" modules_setup() { @@ -179,10 +182,65 @@ xenconsoled_stop_real() [ "$RETVAL" = 2 ] && return 2 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec "$XENCONSOLED" [ "$?" = 2 ] && return 2 - rm -f $PIDFILE + rm -f $XENCONSOLED_PIDFILE return "$RETVAL" } +qemu_start() +{ + [ -x $QEMU ] || return 0 + log_progress_msg "qemu" + qemu_start_real + return $? +} + +qemu_stop() +{ + [ -x $QEMU ] || return 0 + log_progress_msg "qemu" + qemu_stop_real + return $? +} + +qemu_restart() +{ + [ -x $QEMU ] || return 0 + log_progress_msg "qemu" + qemu_stop_real + case "$?" in + 0|1) + qemu_start_real + case "$?" in + 0) ;; + *) return 2 ;; + esac + ;; + *) return 2 ;; + esac + return 0 +} + +qemu_start_real() +{ + start-stop-daemon --start --quiet --pidfile "$QEMU_PIDFILE" --exec "$QEMU" --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile "$QEMU_PIDFILE" --exec "$QEMU" -- \ + $QEMU_ARGS -pidfile "$QEMU_PIDFILE" \ + || return 2 +} + +qemu_stop_real() +{ + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile "$QEMU_PIDFILE" --exec "$QEMU" + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec "$QEMU" + [ "$?" = 2 ] && return 2 + rm -f $QEMU_PIDFILE + return "$RETVAL" +} + + xenstored_start() { log_progress_msg "xenstored" @@ -241,6 +299,11 @@ case "$1" in 0|1) ;; *) log_end_msg 1; exit ;; esac + qemu_start + case "$?" in + 0|1) ;; + *) log_end_msg 1; exit ;; + esac log_end_msg 0 ;; stop) @@ -251,6 +314,11 @@ case "$1" in esac log_daemon_msg "Stopping $DESC" ret=0 + qemu_stop + case "$?" in + 0|1) ;; + *) ret=1 ;; + esac xend_stop case "$?" in 0|1) ;; @@ -271,6 +339,11 @@ case "$1" in esac log_daemon_msg "Restarting $DESC" ret=0 + qemu_restart + case "$?" in + 0|1) ;; + *) ret=1 ;; + esac xend_restart case "$?" in 0|1) ;;