d48d28a
--- xen-4.1.0/tools/misc/xend.orig	2010-02-02 20:43:01.000000000 +0000
d48d28a
+++ xen-4.1.0/tools/misc/xend	2010-02-02 21:16:13.000000000 +0000
d48d28a
@@ -8,103 +8,16 @@
6645a82
 """Xen management daemon.
6645a82
    Provides console server and HTTP management api.
6645a82
 
6645a82
-   Run:
6645a82
-   xend start
6645a82
-
6645a82
-   Restart:
6645a82
-   xend restart
6645a82
-
6645a82
-   The daemon is stopped with:
6645a82
-   xend stop
6645a82
-
6645a82
    The daemon should reconnect to device control interfaces
6645a82
    and recover its state when restarted.
befec2e
 
6645a82
-   On Solaris, the daemons are SMF managed, and you should not attempt
6645a82
-   to start xend by hand.
6645a82
 """
5d197d9
-import fcntl
5d197d9
-import glob
6645a82
-import os
6645a82
-import os.path
6645a82
 import sys
6645a82
-import socket
6645a82
-import signal
6645a82
-import time
6645a82
-import commands
6645a82
-
6645a82
 from xen.xend.server import SrvDaemon
6645a82
 
6645a82
-class CheckError(ValueError):
6645a82
-    pass
6645a82
-
6645a82
-def hline():
6645a82
-    print >>sys.stderr, "*" * 70
6645a82
-
6645a82
-def msg(message):
6645a82
-    print >>sys.stderr, "*" * 3, message
6645a82
-
6645a82
-def check_logging():
6645a82
-    """Check python logging is installed and raise an error if not.
6645a82
-    Logging is standard from Python 2.3 on.
6645a82
-    """
6645a82
-    try:
6645a82
-        import logging
6645a82
-    except ImportError:
6645a82
-        hline()
6645a82
-        msg("Python logging is not installed.")
6645a82
-        msg("Use 'make install-logging' at the xen root to install.")
6645a82
-        msg("")
6645a82
-        msg("Alternatively download and install from")
6645a82
-        msg("http://www.red-dove.com/python_logging.html")
6645a82
-        hline()
6645a82
-        raise CheckError("logging is not installed")
6645a82
-
6645a82
-def check_user():
6645a82
-    """Check that the effective user id is 0 (root).
6645a82
-    """
6645a82
-    if os.geteuid() != 0:
6645a82
-        hline()
6645a82
-        msg("Xend must be run as root.")
6645a82
-        hline()
6645a82
-        raise CheckError("invalid user")
6645a82
-
77513e5
-def start_daemon(daemon, *args):
77513e5
-    if os.fork() == 0:
77513e5
-        os.execvp(daemon, (daemon,) + args)
77513e5
-
6645a82
-def start_blktapctrl():
77513e5
-    start_daemon("blktapctrl", "")
77513e5
-
6645a82
 def main():
6645a82
-    try:
6645a82
-        check_logging()
6645a82
-        check_user()
6645a82
-    except CheckError:
6645a82
-        sys.exit(1)
6645a82
-    
6645a82
     daemon = SrvDaemon.instance()
6645a82
-    if not sys.argv[1:]:
6645a82
-        print 'usage: %s {start|stop|reload|restart}' % sys.argv[0]
6645a82
-    elif sys.argv[1] == 'start':
6645a82
-        if os.uname()[0] != "SunOS":
6645a82
-            start_blktapctrl()
6645a82
-        return daemon.start()
6645a82
-    elif sys.argv[1] == 'trace_start':
6645a82
-        start_blktapctrl()
6645a82
-        return daemon.start(trace=1)
6645a82
-    elif sys.argv[1] == 'stop':
6645a82
-        return daemon.stop()
6645a82
-    elif sys.argv[1] == 'reload':
6645a82
-        return daemon.reloadConfig()
6645a82
-    elif sys.argv[1] == 'restart':
6645a82
-        start_blktapctrl()
6645a82
-        return daemon.stop() or daemon.start()
6645a82
-    elif sys.argv[1] == 'status':
6645a82
-        return daemon.status()
6645a82
-    else:
6645a82
-        print 'not an option:', sys.argv[1]
6645a82
-    return 1
6645a82
+    return daemon.start()
6645a82
 
6645a82
 if __name__ == '__main__':
6645a82
     sys.exit(main())
befec2e
diff -up xen-3.4.0/tools/python/xen/xend/osdep.py.fix xen-3.4.0/tools/python/xen/xend/osdep.py
befec2e
--- xen-3.4.0/tools/python/xen/xend/osdep.py.fix	2009-05-18 13:05:38.000000000 +0200
befec2e
+++ xen-3.4.0/tools/python/xen/xend/osdep.py	2009-05-20 15:39:18.000000000 +0200
befec2e
@@ -27,7 +27,7 @@ _scripts_dir = {
6645a82
 
6645a82
 _xend_autorestart = {
5d197d9
     "NetBSD": True,
6645a82
-    "Linux": True,
6645a82
+    "Linux": False,
6645a82
     "SunOS": False,
6645a82
 }
6645a82
 
befec2e
diff -up xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py.fix xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py
befec2e
--- xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py.fix	2009-05-18 13:05:38.000000000 +0200
befec2e
+++ xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py	2009-05-20 15:39:18.000000000 +0200
befec2e
@@ -110,7 +110,14 @@ class Daemon:
6645a82
         # Fork, this allows the group leader to exit,
6645a82
         # which means the child can never again regain control of the
6645a82
         # terminal
6645a82
-        if os.fork():
6645a82
+        child = os.fork()
6645a82
+        if child:
6645a82
+            if not osdep.xend_autorestart:
6645a82
+                pidfile = open(XEND_PID_FILE, 'w')
6645a82
+                try:
6645a82
+                    pidfile.write(str(child))
6645a82
+                finally:
6645a82
+                    pidfile.close()
6645a82
             os._exit(0)
6645a82
 
6645a82
         # Detach from standard file descriptors, and redirect them to