Blob Blame History Raw
diff -rupN xen-3.2.0.orig/tools/examples/init.d/blktapctrl xen-3.2.0.new/tools/examples/init.d/blktapctrl
--- xen-3.2.0.orig/tools/examples/init.d/blktapctrl	1969-12-31 19:00:00.000000000 -0500
+++ xen-3.2.0.new/tools/examples/init.d/blktapctrl	2008-02-01 17:45:49.000000000 -0500
@@ -0,0 +1,80 @@
+#!/bin/bash
+#
+# blktapctrl	Script to start the Xen blktapctrl daemon
+#
+# Author:       Daniel Berrange <berrange@redhat.com>
+#
+# chkconfig: 2345 97 01
+# description: Starts and stops the Xen blktapctrl daemon.
+### BEGIN INIT INFO
+# Provides:          blktapctrl
+# Required-Start:    $syslog $remote_fs
+# Should-Start:
+# Required-Stop:     $syslog $remote_fs
+# Should-Stop:
+# Default-Start:     3 4 5
+# Default-Stop:      0 1 2 6
+# Default-Enabled:   yes
+# Short-Description: Start/stop blktapctrl
+# Description:       Starts and stops the Xen blktapctrl daemon
+### END INIT INFO
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+if [ ! -d /proc/xen ]; then
+	exit 0
+fi
+if ! grep -q "control_d" /proc/xen/capabilities ; then
+	exit 0
+fi
+
+# Default config params
+BLKTAPCTRL_ARGS=
+
+# User customized params
+test -f /etc/sysconfig/blktapctrl && . /etc/sysconfig/blktapctrl
+
+start() {
+	echo -n $"Starting xen blktapctrl daemon: "
+        /usr/sbin/blktapctrl $BLKTAPCTRL_ARGS
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/blktapctrl
+}
+
+stop() {
+	echo -n $"Stoping xen blktapctrl daemon: "
+        # Refuse to stop blktapctrl as it'll kill all guests
+        RETVAL=1
+        echo_failure
+        echo
+}
+
+rcstatus() {
+        status blktapctrl
+        RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+	echo
+}
+
+
+RETVAL=0
+case "$1" in
+  start)
+        start
+	;;
+  stop)
+        stop
+	;;
+  status)
+        rcstatus
+	;;
+  *)
+	echo $"Usage: $0 {start|stop|status}"
+	exit 1
+esac
+
+exit $RETVAL
+
diff -rupN xen-3.2.0.orig/tools/examples/init.d/sysconfig.blktapctrl xen-3.2.0.new/tools/examples/init.d/sysconfig.blktapctrl
--- xen-3.2.0.orig/tools/examples/init.d/sysconfig.blktapctrl	1969-12-31 19:00:00.000000000 -0500
+++ xen-3.2.0.new/tools/examples/init.d/sysconfig.blktapctrl	2008-02-01 17:49:46.000000000 -0500
@@ -0,0 +1 @@
+#BLKTAPCTRL_ARGS=
diff -rupN xen-3.2.0.orig/tools/examples/init.d/sysconfig.xenconsoled xen-3.2.0.new/tools/examples/init.d/sysconfig.xenconsoled
--- xen-3.2.0.orig/tools/examples/init.d/sysconfig.xenconsoled	1969-12-31 19:00:00.000000000 -0500
+++ xen-3.2.0.new/tools/examples/init.d/sysconfig.xenconsoled	2008-02-01 17:49:56.000000000 -0500
@@ -0,0 +1,12 @@
+
+# Log all hypervisor messages (cf xm dmesg)
+#XENCONSOLED_LOG_HYPERVISOR=no
+
+# Log all guest console output (cf xm console)
+#XENCONSOLED_LOG_GUESTS=no
+
+# Location to store guest & hypervisor logs
+#XENCONSOLED_LOG_DIR=/var/log/xen/console
+
+#XENCONSOLED_ARGS=
+
diff -rupN xen-3.2.0.orig/tools/examples/init.d/sysconfig.xenstored xen-3.2.0.new/tools/examples/init.d/sysconfig.xenstored
--- xen-3.2.0.orig/tools/examples/init.d/sysconfig.xenstored	1969-12-31 19:00:00.000000000 -0500
+++ xen-3.2.0.new/tools/examples/init.d/sysconfig.xenstored	2008-02-01 17:50:02.000000000 -0500
@@ -0,0 +1,4 @@
+
+#XENSTORED_PID="/var/run/xenstore.pid"
+#XENSTORED_ARGS=
+
diff -rupN xen-3.2.0.orig/tools/examples/init.d/xenconsoled xen-3.2.0.new/tools/examples/init.d/xenconsoled
--- xen-3.2.0.orig/tools/examples/init.d/xenconsoled	1969-12-31 19:00:00.000000000 -0500
+++ xen-3.2.0.new/tools/examples/init.d/xenconsoled	2008-02-01 18:07:00.000000000 -0500
@@ -0,0 +1,121 @@
+#!/bin/bash
+#
+# xenconsoled	Script to start and stop the Xen xenconsoled daemon
+#
+# Author:       Daniel P. Berrange <berrange@redhat.com>
+#
+# chkconfig: 2345 97 01
+# description: Starts and stops the Xen control daemon.
+### BEGIN INIT INFO
+# Provides:          xenconsoled
+# Required-Start:    $syslog $remote_fs
+# Should-Start:
+# Required-Stop:     $syslog $remote_fs
+# Should-Stop:
+# Default-Start:     3 4 5
+# Default-Stop:      0 1 2 6
+# Default-Enabled:   yes
+# Short-Description: Start/stop xenconsoled
+# Description:       Starts and stops the Xen xenconsoled daemon.
+### END INIT INFO
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+if [ ! -d /proc/xen ]; then
+	exit 0
+fi
+if ! grep -q "control_d" /proc/xen/capabilities ; then
+	exit 0
+fi
+
+# Default config params
+XENCONSOLED_LOG_HYPERVISOR=no
+XENCONSOLED_LOG_GUESTS=no
+XENCONSOLED_LOG_DIR=/var/log/xen/console
+XENCONSOLED_ARGS=
+
+# User customized params
+test -f /etc/sysconfig/xenconsoled && . /etc/sysconfig/xenconsoled
+
+XENCONSOLED_LOG=none
+if [ "$XENCONSOLED_LOG_HYPERVISOR" = "yes" ]
+then
+        if [ "$XENCONSOLED_LOG_GUESTS" = "yes" ]
+        then
+                XENCONSOLED_LOG=all
+        else
+                XENCONSOLED_LOG=hv
+        fi
+else
+        if [ "$XENCONSOLED_LOG_GUESTS" = "yes" ]
+        then
+                XENCONSOLED_LOG=guest
+        fi
+fi
+
+start() {
+	echo -n $"Starting xenconsoled daemon: "
+        /usr/sbin/xenconsoled --log=$XENCONSOLED_LOG --log-dir=$XENCONSOLED_LOG_DIR $XENCONSOLED_ARGS
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/xenconsoled
+}
+
+stop() {
+	echo -n $"Stopping xenconsoled daemon: "
+	killproc xenconsoled > /dev/null
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/xenconsoled
+}
+
+rcstatus() {
+        status xenconsoled
+        RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+	echo
+}
+
+reload() {
+	echo -n $"Reloading xenconsoled daemon: "
+	killproc xenconsoled -HUP > /dev/null
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+}
+
+RETVAL=0
+case "$1" in
+  start)
+        start
+	;;
+  stop)
+        stop
+	;;
+  status)
+        rcstatus
+	;;
+  reload)
+	reload
+        ;;
+  restart|force-reload)
+	stop
+        start
+	;;
+  condrestart)
+        if [ -f /var/lock/subsys/xenconsoled ]
+        then
+                stop
+                start
+        fi
+        ;;
+  *)
+	echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
+	exit 1
+esac
+
+exit $RETVAL
+
diff -rupN xen-3.2.0.orig/tools/examples/init.d/xend xen-3.2.0.new/tools/examples/init.d/xend
--- xen-3.2.0.orig/tools/examples/init.d/xend	2008-02-01 17:13:01.000000000 -0500
+++ xen-3.2.0.new/tools/examples/init.d/xend	2008-02-01 17:45:22.000000000 -0500
@@ -19,48 +19,79 @@
 # Description:       Starts and stops the Xen control daemon.
 ### END INIT INFO
 
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+if [ ! -d /proc/xen ]; then
+	exit 0
+fi
 if ! grep -q "control_d" /proc/xen/capabilities ; then
 	exit 0
 fi
 
-# Wait for Xend to be up
-function await_daemons_up
-{
-	i=1
-	rets=10
-	xend status
-	while [ $? -ne 0 -a $i -lt $rets ]; do
-	    sleep 1
-	    echo -n .
-	    i=$(($i + 1))
-	    xend status
-	done
+# Default config params
+start() {
+	echo -n $"Starting xend daemon: "
+	/usr/sbin/xend
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/xend
+}
+
+stop() {
+	echo -n $"Stopping xend daemon: "
+	killproc xend > /dev/null
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/xend
 }
 
+rcstatus() {
+        status xend
+        RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+	echo
+}
+
+reload() {
+	echo -n $"Reloading xend daemon: "
+	killproc xend -HUP > /dev/null
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+}
+
+RETVAL=0
 case "$1" in
   start)
-	xend start
-	await_daemons_up
+        start
 	;;
   stop)
-	xend stop
+        stop
 	;;
   status)
-	xend status
+        rcstatus
 	;;
   reload)
-        xend reload
+	reload
         ;;
   restart|force-reload)
-	xend restart
-	await_daemons_up
+	stop
+        start
 	;;
+  condrestart)
+        if [ -f /var/lock/subsys/xend ]
+        then
+                stop
+                start
+        fi
+        ;;
   *)
-	# do not advertise unreasonable commands that there is no reason
-	# to use with this device
-	echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
+	echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
 	exit 1
 esac
 
-exit $?
+exit $RETVAL
 
diff -rupN xen-3.2.0.orig/tools/examples/init.d/xenstored xen-3.2.0.new/tools/examples/init.d/xenstored
--- xen-3.2.0.orig/tools/examples/init.d/xenstored	1969-12-31 19:00:00.000000000 -0500
+++ xen-3.2.0.new/tools/examples/init.d/xenstored	2008-02-01 18:06:42.000000000 -0500
@@ -0,0 +1,83 @@
+#!/bin/bash
+#
+# xenstored	Script to start and stop the Xen control daemon.
+#
+# Author:       Daniel Berrange <berrange@redhat.com
+#
+# chkconfig: 2345 96 01
+# description: Starts and stops the Xen xenstored daemon.
+### BEGIN INIT INFO
+# Provides:          xenstored
+# Required-Start:    $syslog $remote_fs
+# Should-Start:
+# Required-Stop:     $syslog $remote_fs
+# Should-Stop:
+# Default-Start:     3 4 5
+# Default-Stop:      0 1 2 6
+# Default-Enabled:   yes
+# Short-Description: Start/stop xenstored
+# Description:       Starts and stops the Xen control daemon.
+### END INIT INFO
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+if [ ! -d /proc/xen ]; then
+	exit 0
+fi
+if ! grep -q "control_d" /proc/xen/capabilities ; then
+	exit 0
+fi
+
+# Default config params
+XENSTORED_PID="/var/run/xenstore.pid"
+XENSTORED_ARGS=
+
+# User customized params
+test -f /etc/sysconfig/xenstored && . /etc/sysconfig/xenstored
+
+start() {
+	echo -n $"Starting xenstored daemon: "
+        /usr/sbin/xenstored --pid-file $XENSTORED_PID $XENSTORED_ARGS
+	RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/xenstored
+}
+
+stop() {
+	echo -n $"Stopping xenstored daemon: "
+
+	# NB not safe to stop xenstored, if guests are active
+	# or backend driver modules are loaded, so we refuse
+        RETVAL=1
+	test $RETVAL = 0 && echo_success || echo_failure
+        echo
+        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/xenstored
+}
+
+rcstatus() {
+        status xenstored
+        RETVAL=$?
+	test $RETVAL = 0 && echo_success || echo_failure
+	echo
+}
+
+RETVAL=0
+case "$1" in
+  start)
+        start
+	;;
+  stop)
+        stop
+	;;
+  status)
+        rcstatus
+	;;
+  *)
+	echo $"Usage: $0 {start|stop|status}"
+	exit 1
+esac
+
+exit $RETVAL
+
diff -rupN xen-3.2.0.orig/tools/examples/Makefile xen-3.2.0.new/tools/examples/Makefile
--- xen-3.2.0.orig/tools/examples/Makefile	2008-01-16 13:34:59.000000000 -0500
+++ xen-3.2.0.new/tools/examples/Makefile	2008-02-01 18:06:08.000000000 -0500
@@ -3,6 +3,12 @@ include $(XEN_ROOT)/tools/Rules.mk
 
 # Init scripts.
 XEND_INITD = init.d/xend
+BLKTAPCTRL_INITD = init.d/blktapctrl
+BLKTAPCTRL_SYSCONFIG = init.d/sysconfig.blktapctrl
+XENCONSOLED_INITD = init.d/xenconsoled
+XENCONSOLED_SYSCONFIG = init.d/sysconfig.xenconsoled
+XENSTORED_INITD = init.d/xenstored
+XENSTORED_SYSCONFIG = init.d/sysconfig.xenstored
 XENDOMAINS_INITD = init.d/xendomains
 XENDOMAINS_SYSCONFIG = init.d/sysconfig.xendomains
 
@@ -82,6 +88,12 @@ install-initd:
 	[ -d $(DESTDIR)/etc/init.d ] || $(INSTALL_DIR) $(DESTDIR)/etc/init.d
 	[ -d $(DESTDIR)/etc/sysconfig ] || $(INSTALL_DIR) $(DESTDIR)/etc/sysconfig
 	$(INSTALL_PROG) $(XEND_INITD) $(DESTDIR)/etc/init.d
+	$(INSTALL_PROG) $(BLKTAPCTRL_INITD) $(DESTDIR)/etc/init.d
+	$(INSTALL_PROG) $(BLKTAPCTRL_SYSCONFIG) $(DESTDIR)/etc/sysconfig/blktapctrl
+	$(INSTALL_PROG) $(XENCONSOLED_INITD) $(DESTDIR)/etc/init.d
+	$(INSTALL_PROG) $(XENCONSOLED_SYSCONFIG) $(DESTDIR)/etc/sysconfig/xenconsoled
+	$(INSTALL_PROG) $(XENSTORED_INITD) $(DESTDIR)/etc/init.d
+	$(INSTALL_PROG) $(XENSTORED_SYSCONFIG) $(DESTDIR)/etc/sysconfig/xenstored
 	$(INSTALL_PROG) $(XENDOMAINS_INITD) $(DESTDIR)/etc/init.d
 	$(INSTALL_PROG) $(XENDOMAINS_SYSCONFIG) $(DESTDIR)/etc/sysconfig/xendomains
 
Only in xen-3.3.0.new/tools/examples: Makefile.orig
diff -rup xen-3.3.0.orig/tools/misc/xend xen-3.3.0.new/tools/misc/xend
--- xen-3.3.0.orig/tools/misc/xend	2008-08-22 10:49:08.000000000 +0100
+++ xen-3.3.0.new/tools/misc/xend	2008-08-29 11:10:46.000000000 +0100
@@ -8,148 +8,16 @@
 """Xen management daemon.
    Provides console server and HTTP management api.
 
-   Run:
-   xend start
-
-   Restart:
-   xend restart
-
-   The daemon is stopped with:
-   xend stop
-
    The daemon should reconnect to device control interfaces
    and recover its state when restarted.
-
-   On Solaris, the daemons are SMF managed, and you should not attempt
-   to start xend by hand.
 """
-import fcntl
-import glob
-import os
-import os.path
 import sys
-import socket
-import signal
-import time
-import commands
-
-xpp = os.path.join(os.path.dirname(sys.argv[0]), 'xen-python-path')
-if os.path.exists(xpp):
-    result = commands.getstatusoutput(xpp)
-    if result[0] != 0:
-        print >>sys.stderr, result[1]
-        sys.exit(1)
-    sys.path.append(result[1])
 
 from xen.xend.server import SrvDaemon
 
-class CheckError(ValueError):
-    pass
-
-def hline():
-    print >>sys.stderr, "*" * 70
-
-def msg(message):
-    print >>sys.stderr, "*" * 3, message
-
-def check_logging():
-    """Check python logging is installed and raise an error if not.
-    Logging is standard from Python 2.3 on.
-    """
-    try:
-        import logging
-    except ImportError:
-        hline()
-        msg("Python logging is not installed.")
-        msg("Use 'make install-logging' at the xen root to install.")
-        msg("")
-        msg("Alternatively download and install from")
-        msg("http://www.red-dove.com/python_logging.html")
-        hline()
-        raise CheckError("logging is not installed")
-
-def check_user():
-    """Check that the effective user id is 0 (root).
-    """
-    if os.geteuid() != 0:
-        hline()
-        msg("Xend must be run as root.")
-        hline()
-        raise CheckError("invalid user")
-
-def start_daemon(daemon, *args):
-    if os.fork() == 0:
-        os.execvp(daemon, (daemon,) + args)
-
-def start_xenstored():
-    pidfname = "/var/run/xenstore.pid"
-    try:
-        f = open(pidfname, "a")
-        try:
-            fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
-            rootdir = os.getenv("XENSTORED_ROOTDIR") or "/var/lib/xenstored"
-            for i in glob.glob(rootdir + "/tdb*"):
-                try:
-                    os.unlink(i)
-                except:
-                    pass
-            os.unlink(pidfname)
-        except:
-            pass
-        f.close()
-    except:
-        pass
-    XENSTORED_TRACE = os.getenv("XENSTORED_TRACE")
-    cmd = "xenstored --pid-file /var/run/xenstore.pid"
-    if XENSTORED_TRACE:
-        cmd += " -T /var/log/xen/xenstored-trace.log"
-    s,o = commands.getstatusoutput(cmd)
-
-def start_consoled():
-    XENCONSOLED_TRACE = os.getenv("XENCONSOLED_TRACE")
-    args = ""
-    if XENCONSOLED_TRACE:
-        args += "--log=" + XENCONSOLED_TRACE
-    start_daemon("xenconsoled", args)
-
-def start_blktapctrl():
-    start_daemon("blktapctrl", "")
-
 def main():
-    try:
-        check_logging()
-        check_user()
-    except CheckError:
-        sys.exit(1)
-    
     daemon = SrvDaemon.instance()
-    if not sys.argv[1:]:
-        print 'usage: %s {start|stop|reload|restart}' % sys.argv[0]
-    elif sys.argv[1] == 'start':
-        if os.uname()[0] != "SunOS":
-            start_xenstored()
-            start_consoled()
-            start_blktapctrl()
-        return daemon.start()
-    elif sys.argv[1] == 'trace_start':
-        start_xenstored()
-        start_consoled()
-        start_blktapctrl()
-        return daemon.start(trace=1)
-    elif sys.argv[1] == 'stop':
-        return daemon.stop()
-    elif sys.argv[1] == 'reload':
-        return daemon.reloadConfig()
-    elif sys.argv[1] == 'restart':
-        start_xenstored()
-        start_consoled()
-        start_blktapctrl()
-        return daemon.stop() or daemon.start()
-    elif sys.argv[1] == 'status':
-        return daemon.status()
-    else:
-        print 'not an option:', sys.argv[1]
-    return 1
+    return daemon.start()
 
 if __name__ == '__main__':
     sys.exit(main())
diff -rup xen-3.3.0.orig/tools/python/xen/xend/osdep.py xen-3.3.0.new/tools/python/xen/xend/osdep.py
--- xen-3.3.0.orig/tools/python/xen/xend/osdep.py	2008-08-22 10:49:08.000000000 +0100
+++ xen-3.3.0.new/tools/python/xen/xend/osdep.py	2008-08-29 11:08:54.000000000 +0100
@@ -26,7 +26,7 @@ _scripts_dir = {
 
 _xend_autorestart = {
     "NetBSD": True,
-    "Linux": True,
+    "Linux": False,
     "SunOS": False,
 }
 
diff -rup xen-3.3.0.orig/tools/python/xen/xend/server/SrvDaemon.py xen-3.3.0.new/tools/python/xen/xend/server/SrvDaemon.py
--- xen-3.3.0.orig/tools/python/xen/xend/server/SrvDaemon.py	2008-08-22 10:49:08.000000000 +0100
+++ xen-3.3.0.new/tools/python/xen/xend/server/SrvDaemon.py	2008-08-29 11:08:54.000000000 +0100
@@ -109,7 +109,14 @@ class Daemon:
         # Fork, this allows the group leader to exit,
         # which means the child can never again regain control of the
         # terminal
-        if os.fork():
+        child = os.fork()
+        if child:
+            if not osdep.xend_autorestart:
+                pidfile = open(XEND_PID_FILE, 'w')
+                try:
+                    pidfile.write(str(child))
+                finally:
+                    pidfile.close()
             os._exit(0)
 
         # Detach from standard file descriptors, and redirect them to