mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
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>
125 lines
2.8 KiB
Bash
125 lines
2.8 KiB
Bash
#!/bin/sh
|
|
#
|
|
# PROVIDE: xencommons
|
|
# REQUIRE: DAEMON
|
|
|
|
. /etc/rc.subr
|
|
|
|
DIR=$(dirname "$0")
|
|
. "${DIR}/xen-hotplugpath.sh"
|
|
|
|
LD_LIBRARY_PATH="${LIBDIR}"
|
|
export LD_LIBRARY_PATH
|
|
|
|
name="xencommons"
|
|
rcvar=xend
|
|
start_precmd="xen_precmd"
|
|
start_cmd="xen_startcmd"
|
|
stop_cmd="xen_stop"
|
|
status_cmd="xen_status"
|
|
extra_commands="status"
|
|
required_files="/kern/xen/privcmd"
|
|
|
|
XENSTORED_PIDFILE="/var/run/xenstored.pid"
|
|
XENCONSOLED_PIDFILE="/var/run/xenconsoled.pid"
|
|
XENBACKENDD_PIDFILE="/var/run/xenbackendd.pid"
|
|
#XENBACKENDD_DEBUG=1
|
|
#XENCONSOLED_TRACE="/var/log/xen/xenconsole-trace.log"
|
|
#XENSTORED_TRACE="/var/log/xen/xenstore-trace.log"
|
|
|
|
xen_precmd()
|
|
{
|
|
mkdir -p /var/run/xenstored || exit 1
|
|
}
|
|
|
|
xen_startcmd()
|
|
{
|
|
local time=0
|
|
local timeout=30
|
|
|
|
xenstored_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${SBINDIR}/xenstored)
|
|
if test -z "$xenstored_pid"; then
|
|
printf "Cleaning xenstore database.\n"
|
|
if [ -z "${XENSTORED_ROOTDIR}" ]; then
|
|
XENSTORED_ROOTDIR="/var/lib/xenstored"
|
|
fi
|
|
rm -f ${XENSTORED_ROOTDIR}/tdb* >/dev/null 2>&1
|
|
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"
|
|
fi
|
|
${SBINDIR}/xenstored ${XENSTORED_ARGS}
|
|
while [ $time -lt $timeout ] && ! `${BINDIR}/xenstore-read -s / >/dev/null 2>&1` ; do
|
|
printf "."
|
|
time=$(($time+1))
|
|
sleep 1
|
|
done
|
|
else
|
|
printf "Starting xenservices: xenconsoled."
|
|
fi
|
|
|
|
XENCONSOLED_ARGS=""
|
|
if [ -n "${XENCONSOLED_TRACE}" ]; then
|
|
XENCONSOLED_ARGS="${XENCONSOLED_ARGS} --log=${XENCONSOLED_TRACE}"
|
|
fi
|
|
|
|
${SBINDIR}/xenconsoled ${XENCONSOLED_ARGS}
|
|
|
|
printf "\n"
|
|
|
|
printf "Setting domain 0 name.\n"
|
|
${BINDIR}/xenstore-write "/local/domain/0/name" "Domain-0"
|
|
}
|
|
|
|
xen_stop()
|
|
{
|
|
pids=""
|
|
printf "Stopping xencommons.\n"
|
|
printf "WARNING: Not stopping xenstored, as it cannot be restarted.\n"
|
|
|
|
rc_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${SBINDIR}/xenconsoled)
|
|
pids="$pids $rc_pid"
|
|
|
|
kill -${sig_stop:-TERM} $pids
|
|
wait_for_pids $pids
|
|
}
|
|
|
|
xen_status()
|
|
{
|
|
xenstored_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${SBINDIR}/xenstored)
|
|
if test -n ${xenstored_pid}; then
|
|
pids="$pids $xenstored_pid"
|
|
fi
|
|
|
|
xenconsoled_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${SBINDIR}/xenconsoled)
|
|
if test -n ${xenconsoled_pid}; then
|
|
pids="$pids $xenconsoled_pid"
|
|
fi
|
|
|
|
if test -n "$xenconsoled_pid" -a -n "$xenstored_pid";
|
|
then
|
|
echo "xencommons are running as pids $pids."
|
|
return 0
|
|
fi
|
|
if test -z "$xenconsoled_pid" -a -z "$xenstored_pid";
|
|
then
|
|
echo "xencommons are not running."
|
|
return 0
|
|
fi
|
|
|
|
if test -n $xenstored_pid; then
|
|
echo "xenstored is running as pid $xenstored_pid."
|
|
else
|
|
echo "xenstored is not running."
|
|
fi
|
|
if test -n $xenconsoled_pid; then
|
|
echo "xenconsoled is running as pid $xenconsoled_pid."
|
|
else
|
|
echo "xenconsoled is not running."
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|