init/NetBSD: move xenbackendd to xend init script
authorRoger Pau Monne <roger.pau@citrix.com>
Wed, 1 Aug 2012 11:46:48 +0000 (12:46 +0100)
committerRoger Pau Monne <roger.pau@citrix.com>
Wed, 1 Aug 2012 11:46:48 +0000 (12:46 +0100)
xenbackendd is not needed by the xl toolstack, so move it's launch to
the xend script.

We have to iterate until we are sure there are no xend processes left,
since doing a single pkill usually leaves xend processes running.

Signed-off-by: Roger Pau Monne <roger.pau@citrix.com>
Acked-by: Christoph Egger <Christoph.Egger@amd.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Tested-by: Christoph Egger <Christoph.Egger@amd.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
tools/hotplug/NetBSD/rc.d/xencommons
tools/hotplug/NetBSD/rc.d/xend

index c0d87bf4da14f6c4e3b7e1945251e4886353db84..fe4c9acec359eeff3c7e0a0aef33a13755af1031 100644 (file)
@@ -29,8 +29,6 @@ XENBACKENDD_PIDFILE="/var/run/xenbackendd.pid"
 
 xen_precmd()
 {
-       mkdir -p /var/run/xend || exit 1
-       mkdir -p /var/run/xend/boot || exit 1
        mkdir -p /var/run/xenstored || exit 1
 }
 
@@ -46,7 +44,7 @@ xen_startcmd()
                        XENSTORED_ROOTDIR="/var/lib/xenstored"
                fi
                rm -f ${XENSTORED_ROOTDIR}/tdb* >/dev/null 2>&1
-               printf "Starting xenservices: xenstored, xenconsoled, xenbackendd."
+               printf "Starting xenservices: xenstored, xenconsoled."
                XENSTORED_ARGS=" --pid-file ${XENSTORED_PIDFILE}"
                if [ -n "${XENSTORED_TRACE}" ]; then
                        XENSTORED_ARGS="${XENSTORED_ARGS} -T /var/log/xen/xenstored-trace.log"
@@ -58,7 +56,7 @@ xen_startcmd()
                        sleep 1
                done
        else
-               printf "Starting xenservices: xenconsoled, xenbackendd."
+               printf "Starting xenservices: xenconsoled."
        fi
 
        XENCONSOLED_ARGS=""
@@ -68,13 +66,6 @@ xen_startcmd()
 
        ${SBINDIR}/xenconsoled ${XENCONSOLED_ARGS}
 
-       XENBACKENDD_ARGS=""
-       if [ -n "${XENBACKENDD_DEBUG}" ]; then
-               XENBACKENDD_ARGS="${XENBACKENDD_ARGS} -d"
-       fi
-
-       ${SBINDIR}/xenbackendd ${XENBACKENDD_ARGS}
-
        printf "\n"
 
        printf "Setting domain 0 name.\n"
@@ -87,8 +78,6 @@ xen_stop()
        printf "Stopping xencommons.\n"
        printf "WARNING: Not stopping xenstored, as it cannot be restarted.\n"
 
-       rc_pid=$(check_pidfile ${XENBACKENDD_PIDFILE} ${SBINDIR}/xenbackendd)
-       pids="$pids $rc_pid"
        rc_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${SBINDIR}/xenconsoled)
        pids="$pids $rc_pid"
 
@@ -108,17 +97,12 @@ xen_status()
                pids="$pids $xenconsoled_pid"
        fi
 
-       xenbackend_pid=$(check_pidfile ${XENBACKENDD_PIDFILE} ${SBINDIR}/xenbackendd)
-       if test -n ${xenbackend_pid}; then
-               pids="$pids $xenbackend_pid"
-       fi
-
-       if test -n "$xenbackend_pid" -a -n "$xenconsoled_pid" -a -n "$xenstored_pid";
+       if test -n "$xenconsoled_pid" -a -n "$xenstored_pid";
        then
                echo "xencommons are running as pids $pids."
                return 0
        fi
-       if test -z "$xenbackend_pid" -a -z "$xenconsoled_pid" -a -z "$xenstored_pid";
+       if test -z "$xenconsoled_pid" -a -z "$xenstored_pid";
        then
                echo "xencommons are not running."
                return 0
@@ -134,11 +118,6 @@ xen_status()
        else
                echo "xenconsoled is not running."
        fi
-       if test -n $xenbackend_pid; then
-               echo "xenbackendd is running as pid $xenbackend_pid."
-       else
-               echo "xenbackendd is not running."
-       fi
 }
 
 load_rc_config $name
index ead9ee0390ba1b28dfaff95daf49e7638f65d3a8..ac5f2ca1d8319d2b158b276669ec7437ff59a1bf 100644 (file)
@@ -15,10 +15,57 @@ export PATH
 
 name="xend"
 rcvar=$name
-command="${SBINDIR}/xend"
-command_args="start"
-command_interpreter=`head -n 1 ${command} | awk '{ print substr($0,3) }'`
-sig_stop="SIGKILL"
+start_precmd="xend_precmd"
+start_cmd="xend_startcmd"
+stop_cmd="xend_stop"
+status_cmd="xend_status"
+extra_commands="status"
+required_files="/kern/xen/privcmd"
+
+XENBACKENDD_PIDFILE="/var/run/xenbackendd.pid"
+#XENBACKENDD_DEBUG=1
+
+xend_precmd()
+{
+       mkdir -p /var/run/xend || exit 1
+       mkdir -p /var/run/xend/boot || exit 1
+}
+
+xend_startcmd()
+{
+       printf "Starting xenbackendd.\n"
+
+       XENBACKENDD_ARGS=""
+       if [ -n "${XENBACKENDD_DEBUG}" ]; then
+               XENBACKENDD_ARGS="${XENBACKENDD_ARGS} -d"
+       fi
+
+       ${SBINDIR}/xenbackendd ${XENBACKENDD_ARGS}
+
+       printf "Starting xend.\n"
+       ${SBINDIR}/xend start >/dev/null 2>&1
+}
+
+xend_stop()
+{
+       printf "Stopping xenbackendd, xend\n"
+       xb_pid=$(check_pidfile ${XENBACKENDD_PIDFILE} ${SBINDIR}/xenbackendd)
+       if test -n "$xb_pid";
+       then
+               kill -${sig_stop:-TERM} $xb_pid
+       fi
+       while pgrep -f ${SBINDIR}/xend >/dev/null 2>&1; do
+               pkill -${sig_stop:-KILL} -f ${SBINDIR}/xend
+       done
+       wait_for_pids $xb_pid
+       rm -f /var/lock/subsys/xend /var/lock/xend /var/run/xenbackendd.pid
+}
+
+xend_status()
+{
+       ${SBINDIR}/xend status
+}
 
 load_rc_config $name
 run_rc_command "$1"
+