]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Move code dealing with global startup/shutdown/reload into driver.c
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 26 Jun 2007 20:45:21 +0000 (20:45 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 26 Jun 2007 20:45:21 +0000 (20:45 +0000)
ChangeLog
qemud/driver.c
qemud/driver.h
qemud/qemud.c

index 3dec2d28fdbb000427da2c4f79df0758ae39b834..4c0bbe01a3406909565bde85af3eb8f31247cc3c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jun 26 16:41:00 EST 2007 Daniel P. Berrange <berrange@redhat.com>
+
+       * qemud/driver.c, qemud/driver.h, qemud/qemud.c: Move code
+       handling global startup, shutdown & reload into driver.c
+
 Tue Jun 26 16:41:00 EST 2007 Daniel P. Berrange <berrange@redhat.com>
 
        * qemud/driver.c, qemud/driver.h, qemud/internal.h,
index 5f774d7be5c1a596cee94dd8ed81b003b7736783..eea4de42d1644fb623baff9010a2374ba0b33e55 100644 (file)
@@ -93,6 +93,19 @@ static int qemudSetNonBlock(int fd) {
 }
 
 
+int qemudStartup(struct qemud_server *server) {
+    return qemudScanConfigs(server);
+}
+
+void qemudReload(struct qemud_server *server) {
+    qemudScanConfigs(server);
+
+    if (server->iptables) {
+        qemudLog(QEMUD_INFO, "Reloading iptables rules");
+        iptablesReloadRules(server->iptables);
+    }
+}
+
 void qemudShutdown(struct qemud_server *server) {
     struct qemud_vm *vm;
     struct qemud_network *network;
@@ -448,7 +461,7 @@ static int qemudNextFreeVNCPort(struct qemud_server *server ATTRIBUTE_UNUSED) {
 int qemudStartVMDaemon(struct qemud_server *server,
                        struct qemud_vm *vm) {
     char **argv = NULL, **tmp;
-    int i, ret = -1;
+    int i;
     char logfile[PATH_MAX];
 
     if (qemudIsActiveVM(vm)) {
@@ -524,24 +537,12 @@ int qemudStartVMDaemon(struct qemud_server *server,
 
         server->ninactivevms--;
         server->nactivevms++;
-
-        virEventAddHandle(vm->stdout,
-                          POLLIN | POLLERR | POLLHUP,
-                          qemudDispatchVMEvent,
-                          server);
-        virEventAddHandle(vm->stderr,
-                          POLLIN | POLLERR | POLLHUP,
-                          qemudDispatchVMEvent,
-                          server);
-
-        ret = 0;
-
-        if (qemudWaitForMonitor(server, vm) < 0) {
-            qemudShutdownVMDaemon(server, vm);
-            ret = -1;
-        }
     }
 
+    for (i = 0 ; argv[i] ; i++)
+        free(argv[i]);
+    free(argv);
+
     if (vm->tapfds) {
         for (i = 0; vm->tapfds[i] != -1; i++) {
             close(vm->tapfds[i]);
@@ -551,12 +552,30 @@ int qemudStartVMDaemon(struct qemud_server *server,
         vm->tapfds = NULL;
         vm->ntapfds = 0;
     }
-  
-    for (i = 0 ; argv[i] ; i++)
-        free(argv[i]);
-    free(argv);
 
-    return ret;
+    if (virEventAddHandle(vm->stdout,
+                          POLLIN | POLLERR | POLLHUP,
+                          qemudDispatchVMEvent,
+                          server) < 0) {
+        qemudShutdownVMDaemon(server, vm);
+        return -1;
+    }
+
+    if (virEventAddHandle(vm->stderr,
+                          POLLIN | POLLERR | POLLHUP,
+                          qemudDispatchVMEvent,
+                          server) < 0) {
+        qemudShutdownVMDaemon(server, vm);
+        return -1;
+    }
+
+
+    if (qemudWaitForMonitor(server, vm) < 0) {
+        qemudShutdownVMDaemon(server, vm);
+        return -1;
+    }
+
+    return 0;
 }
 
 static int qemudVMData(struct qemud_server *server ATTRIBUTE_UNUSED,
@@ -634,6 +653,9 @@ int qemudShutdownVMDaemon(struct qemud_server *server, struct qemud_vm *vm) {
     server->nactivevms--;
     server->ninactivevms++;
 
+    if (!vm->configFile[0])
+        qemudRemoveInactiveVM(server, vm);
+
     return 0;
 }
 
@@ -1096,6 +1118,9 @@ int qemudShutdownNetworkDaemon(struct qemud_server *server,
     server->nactivenetworks--;
     server->ninactivenetworks++;
 
+    if (!network->configFile[0])
+        qemudRemoveInactiveNetwork(server, network);
+
     return 0;
 }
 
@@ -1116,11 +1141,10 @@ static void qemudDispatchVMEvent(int fd, int events, void *opaque) {
     if (!vm)
         return;
 
-    if (events == POLLIN &&
-        qemudDispatchVMLog(server, vm, fd) == 0)
-        return;
-
-    qemudDispatchVMFailure(server, vm, fd);
+    if (events == POLLIN)
+        qemudDispatchVMLog(server, vm, fd);
+    else
+        qemudDispatchVMFailure(server, vm, fd);
 }
 
 int qemudMonitorCommand(struct qemud_server *server ATTRIBUTE_UNUSED,
index 803d606e74fd396cbe211354026ec10e9f17d214..06b9ae87d7ae093b52187aed18892830a7910551 100644 (file)
@@ -39,6 +39,8 @@ int qemudStartNetworkDaemon(struct qemud_server *server,
 int qemudShutdownNetworkDaemon(struct qemud_server *server,
                                struct qemud_network *network);
 
+int qemudStartup(struct qemud_server *server);
+void qemudReload(struct qemud_server *server);
 void qemudShutdown(struct qemud_server *server);
 
 void qemudReportError(struct qemud_server *server,
index 3b56a6d4069f467c8de88dafd101a3da05ed9bf0..786a38dd98a229b016e8dfe02ff488a0c9353cdb 100644 (file)
@@ -57,8 +57,6 @@
 #include "../src/remote_internal.h"
 #include "../src/conf.h"
 #include "dispatch.h"
-#include "conf.h"
-#include "iptables.h"
 #include "driver.h"
 #include "event.h"
 
@@ -209,12 +207,7 @@ static void qemudDispatchSignalEvent(int fd ATTRIBUTE_UNUSED,
     case SIGHUP:
         qemudLog(QEMUD_INFO, "Reloading configuration on SIGHUP");
         if (!remote) {
-            ret = qemudScanConfigs(server);
-
-            if (server->iptables) {
-                qemudLog(QEMUD_INFO, "Reloading iptables rules");
-                iptablesReloadRules(server->iptables);
-            }
+            qemudReload(server);
         }
         break;
 
@@ -733,7 +726,7 @@ static struct qemud_server *qemudInitialize(int sigread) {
         goto cleanup;
 
     if (!remote) /* qemud only */ {
-        if (qemudScanConfigs(server) < 0) {
+        if (qemudStartup(server) < 0) {
             goto cleanup;
         }
     } else /* remote only */ {
@@ -1491,37 +1484,7 @@ static void qemudDispatchServerEvent(int fd, int events, void *opaque) {
 }
 
 
-static void qemudCleanupInactive(struct qemud_server *server) {
-    struct qemud_vm *vm = server->vms;
-    struct qemud_network *network = server->networks;
-
-    /* Cleanup any VMs which shutdown & dont have an associated
-       config file */
-    while (vm) {
-        struct qemud_vm *next = vm->next;
-
-        if (!qemudIsActiveVM(vm) && !vm->configFile[0])
-            qemudRemoveInactiveVM(server, vm);
-
-        vm = next;
-    }
-
-    /* Cleanup any networks too */
-    while (network) {
-        struct qemud_network *next = network->next;
-
-        if (!qemudIsActiveNetwork(network) && !network->configFile[0])
-            qemudRemoveInactiveNetwork(server, network);
-
-        network = next;
-    }
-
-    return;
-}
-
-
-
-static int qemudOneLoop(struct qemud_server *server) {
+static int qemudOneLoop(struct qemud_server *server ATTRIBUTE_UNUSED) {
     sig_atomic_t errors;
 
     if (virEventRunOnce() < 0)
@@ -1537,8 +1500,6 @@ static int qemudOneLoop(struct qemud_server *server) {
         return -1;
     }
 
-    qemudCleanupInactive(server);
-
     return 0;
 }