]>
Commit | Line | Data |
---|---|---|
7f560d13 JR |
1 | --- xen-4.1.0/tools/misc/xend.orig 2010-02-02 20:43:01.000000000 +0000 |
2 | +++ xen-4.1.0/tools/misc/xend 2010-02-02 21:16:13.000000000 +0000 | |
3 | @@ -8,103 +8,16 @@ | |
4 | """Xen management daemon. | |
5 | Provides console server and HTTP management api. | |
6 | ||
7 | - Run: | |
8 | - xend start | |
9 | - | |
10 | - Restart: | |
11 | - xend restart | |
12 | - | |
13 | - The daemon is stopped with: | |
14 | - xend stop | |
15 | - | |
16 | The daemon should reconnect to device control interfaces | |
17 | and recover its state when restarted. | |
18 | ||
19 | - On Solaris, the daemons are SMF managed, and you should not attempt | |
20 | - to start xend by hand. | |
21 | """ | |
22 | -import fcntl | |
23 | -import glob | |
24 | -import os | |
25 | -import os.path | |
26 | import sys | |
27 | -import socket | |
28 | -import signal | |
29 | -import time | |
30 | -import commands | |
31 | - | |
32 | from xen.xend.server import SrvDaemon | |
33 | ||
34 | -class CheckError(ValueError): | |
35 | - pass | |
36 | - | |
37 | -def hline(): | |
38 | - print >>sys.stderr, "*" * 70 | |
39 | - | |
40 | -def msg(message): | |
41 | - print >>sys.stderr, "*" * 3, message | |
42 | - | |
43 | -def check_logging(): | |
44 | - """Check python logging is installed and raise an error if not. | |
45 | - Logging is standard from Python 2.3 on. | |
46 | - """ | |
47 | - try: | |
48 | - import logging | |
49 | - except ImportError: | |
50 | - hline() | |
51 | - msg("Python logging is not installed.") | |
52 | - msg("Use 'make install-logging' at the xen root to install.") | |
53 | - msg("") | |
54 | - msg("Alternatively download and install from") | |
55 | - msg("http://www.red-dove.com/python_logging.html") | |
56 | - hline() | |
57 | - raise CheckError("logging is not installed") | |
58 | - | |
59 | -def check_user(): | |
60 | - """Check that the effective user id is 0 (root). | |
61 | - """ | |
62 | - if os.geteuid() != 0: | |
63 | - hline() | |
64 | - msg("Xend must be run as root.") | |
65 | - hline() | |
66 | - raise CheckError("invalid user") | |
67 | - | |
68 | -def start_daemon(daemon, *args): | |
69 | - if os.fork() == 0: | |
70 | - os.execvp(daemon, (daemon,) + args) | |
71 | - | |
72 | -def start_blktapctrl(): | |
73 | - start_daemon("blktapctrl", "") | |
74 | - | |
75 | def main(): | |
76 | - try: | |
77 | - check_logging() | |
78 | - check_user() | |
79 | - except CheckError: | |
80 | - sys.exit(1) | |
81 | - | |
82 | daemon = SrvDaemon.instance() | |
83 | - if not sys.argv[1:]: | |
84 | - print 'usage: %s {start|stop|reload|restart}' % sys.argv[0] | |
85 | - elif sys.argv[1] == 'start': | |
86 | - if os.uname()[0] != "SunOS": | |
87 | - start_blktapctrl() | |
88 | - return daemon.start() | |
89 | - elif sys.argv[1] == 'trace_start': | |
90 | - start_blktapctrl() | |
91 | - return daemon.start(trace=1) | |
92 | - elif sys.argv[1] == 'stop': | |
93 | - return daemon.stop() | |
94 | - elif sys.argv[1] == 'reload': | |
95 | - return daemon.reloadConfig() | |
96 | - elif sys.argv[1] == 'restart': | |
97 | - start_blktapctrl() | |
98 | - return daemon.stop() or daemon.start() | |
99 | - elif sys.argv[1] == 'status': | |
100 | - return daemon.status() | |
101 | - else: | |
102 | - print 'not an option:', sys.argv[1] | |
103 | - return 1 | |
104 | + return daemon.start() | |
105 | ||
106 | if __name__ == '__main__': | |
107 | sys.exit(main()) | |
108 | diff -up xen-3.4.0/tools/python/xen/xend/osdep.py.fix xen-3.4.0/tools/python/xen/xend/osdep.py | |
109 | --- xen-3.4.0/tools/python/xen/xend/osdep.py.fix 2009-05-18 13:05:38.000000000 +0200 | |
110 | +++ xen-3.4.0/tools/python/xen/xend/osdep.py 2009-05-20 15:39:18.000000000 +0200 | |
111 | @@ -27,7 +27,7 @@ _scripts_dir = { | |
112 | ||
113 | _xend_autorestart = { | |
114 | "NetBSD": True, | |
115 | - "Linux": True, | |
116 | + "Linux": False, | |
117 | "SunOS": False, | |
118 | } | |
119 | ||
120 | 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 | |
121 | --- xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py.fix 2009-05-18 13:05:38.000000000 +0200 | |
122 | +++ xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py 2009-05-20 15:39:18.000000000 +0200 | |
123 | @@ -110,7 +110,14 @@ class Daemon: | |
124 | # Fork, this allows the group leader to exit, | |
125 | # which means the child can never again regain control of the | |
126 | # terminal | |
127 | - if os.fork(): | |
128 | + child = os.fork() | |
129 | + if child: | |
130 | + if not osdep.xend_autorestart: | |
131 | + pidfile = open(XEND_PID_FILE, 'w') | |
132 | + try: | |
133 | + pidfile.write(str(child)) | |
134 | + finally: | |
135 | + pidfile.close() | |
136 | os._exit(0) | |
137 | ||
138 | # Detach from standard file descriptors, and redirect them to |