summaryrefslogtreecommitdiffstats
path: root/main/xen/xend.initd
diff options
context:
space:
mode:
Diffstat (limited to 'main/xen/xend.initd')
-rw-r--r--main/xen/xend.initd57
1 files changed, 28 insertions, 29 deletions
diff --git a/main/xen/xend.initd b/main/xen/xend.initd
index 398ecd86b..1c667e831 100644
--- a/main/xen/xend.initd
+++ b/main/xen/xend.initd
@@ -1,53 +1,52 @@
#!/sbin/runscript
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/xen-tools/files/xend.initd-r2,v 1.2 2011/09/10 17:22:46 alexxy Exp $
depend() {
- need xencommons
- before xendomains
+ need net xenconsoled xenstored
+ after firewall
+ before xendomains sshd
}
await_daemons_up() {
- i=1
- rets=10
- /usr/sbin/xend status
- while [ $? -ne 0 -a $i -lt $rets ]; do
+ local i=1 rets=10
+ while [ $i -lt $rets ]; do
+ /usr/sbin/xend status && return 0
sleep 1
- i=$(($i + 1))
- /usr/sbin/xend status
done
+ return 1
+}
+
+is_privileged_domain() {
+ grep -qsE '^control_d$' /proc/xen/capabilities
+ return $?
}
start() {
- ebegin "Starting Xen daemons"
- if [ -z "`ps xenconsoled -o pid=`" ]; then
- eend 1
- echo "xencommons should be started first."
- exit 1
- fi
- mkdir -p /var/lock
- if [ -d /var/lock/subsys ]; then
- touch /var/lock/subsys/xend
- else
- touch /var/lock/xend
+ if ! is_privileged_domain ; then
+ eerror "Can't start xend - this is not a privileged domain."
+ return 1
fi
+
+ ebegin "Starting Xen control daemon"
/usr/sbin/xend start
- await_daemons_up
+ /usr/sbin/xend status || await_daemons_up
eend $?
}
stop() {
+ if [ "$(xm list | wc -l)" -gt 2 ]; then
+ ebegin " Stopping all domains"
+ /usr/sbin/xl shutdown -a -w >/dev/null
+ eend $?
+ fi
+
ebegin "Stopping Xen control daemon"
/usr/sbin/xend stop
- rm -f /var/lock/subsys/xend /var/lock/xend
- eend $?
-}
-
-restart() {
- ebegin "Restarting Xen control daemon"
- /usr/sbin/xend restart
- await_daemons_up
eend $?
}
status() {
- /usr/sbin/xend status
+ is_privileged_domain && /usr/sbin/xend status
}