On Sun, Mar 09, 2008 at 08:59:24PM +0000, Daniel P. Berrange wrote:
Changes to the daemon to make it called qemudShutdown() broke the
network
driver when run in --daemon mode. This is because the main daemon forks
into the background, and the original PID then exits destroying any active
networks & removing the iptables rules.
[...]
Index: qemud/qemud.c
===================================================================
RCS file: /data/cvs/libvirt/qemud/qemud.c,v
retrieving revision 1.89
diff -u -r1.89 qemud.c
--- qemud/qemud.c 3 Mar 2008 18:10:19 -0000 1.89
+++ qemud/qemud.c 9 Mar 2008 20:56:27 -0000
@@ -393,7 +393,7 @@
case -1:
return -1;
default:
- return nextpid;
+ _exit(0);
}
cleanup:
@@ -418,8 +418,7 @@
status != 0) {
return -1;
}
-
- return pid;
+ _exit(0);
}
}
}
@@ -2116,16 +2115,12 @@
goto error1;
if (godaemon) {
- int pid;
openlog("libvirtd", 0, 0);
- pid = qemudGoDaemon();
- if (pid < 0) {
+ if (qemudGoDaemon() < 0) {
qemudLog(QEMUD_ERR, _("Failed to fork as daemon: %s"),
strerror(errno));
goto error1;
}
- if (pid > 0)
- goto out;
/* Choose the name of the PID file. */
if (!pid_file) {
@@ -2172,7 +2167,6 @@
if (godaemon)
closelog();
- out:
ret = 0;
error2:
+1 to this patch.
There's another problem I've noticed. If you start the daemon and TLS
is enabled in the config and there is no /etc/pki directory, then the
daemon exits with an error but doesn't clean up the bridge, meaning
that next time you start the daemon the default network cannot be
created.
Rich.
--
Richard Jones, Emerging Technologies, Red Hat
http://et.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top