Files
xen/tools/hotplug/FreeBSD/rc.d/xencommons.in
T
Olaf Hering 9d628ff6cc tools: Fix install.sh for systemd
On a fedora system, if you run `sudo sh install.sh` you break your
system. The installation clobbers /var/run, a symlink to /run.
A subsequent boot fails when /var/run and /run are different since
accesses through /var/run can't find items that now only exist in /run
and vice-versa.

Skip populating /var/run/xen during make install.
The directory is already created by some scripts. Adjust all remaining
scripts to create XEN_RUN_DIR at runtime.

Use the shell variable XEN_RUN_DIR instead of hardcoded paths.

XEN_RUN_STORED is covered by XEN_RUN_DIR because xenstored is usually
started afterwards.

Reported-by: Jason Andryuk <jandryuk@gmail.com>
Signed-off-by: Olaf Hering <olaf@aepfle.de>
Tested-by: Jason Andryuk <jandryuk@gmail.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
2023-05-16 20:03:02 +01:00

117 lines
2.6 KiB
Bash

#!/bin/sh
#
# PROVIDE: xencommons
# REQUIRE: DAEMON
XENSTORED=@XENSTORED@
. /etc/rc.subr
. @XEN_SCRIPT_DIR@/hotplugpath.sh
LD_LIBRARY_PATH="${libdir}"
export LD_LIBRARY_PATH
name="xencommons"
rcvar="xencommons_enable"
start_cmd="xen_startcmd"
stop_cmd="xen_stop"
status_cmd="xen_status"
extra_commands="status"
required_files="/dev/xen/xenstored"
XENCONSOLED_PIDFILE="@XEN_RUN_DIR@/xenconsoled.pid"
#XENCONSOLED_TRACE="none|guest|hv|all"
XENSTORED_PIDFILE="@XEN_RUN_DIR@/xenstored.pid"
#XENSTORED_TRACE="@XEN_LOG_DIR@/xen/xenstore-trace.log"
load_rc_config $name
: ${xencommons_enable:=no}
xen_startcmd()
{
local time=0
local timeout=30
mkdir -p "${XEN_RUN_DIR}"
xenstored_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${XENSTORED})
if test -z "$xenstored_pid"; then
printf "Starting xenservices: xenstored, xenconsoled."
XENSTORED_ARGS=" --pid-file ${XENSTORED_PIDFILE}"
if [ -n "${XENSTORED_TRACE}" ]; then
XENSTORED_ARGS="${XENSTORED_ARGS} -T @XEN_LOG_DIR@/xenstored-trace.log"
fi
${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, domid and JSON config...\n"
${LIBEXEC_BIN}/xen-init-dom0
}
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} ${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
}
run_rc_command "$1"