]> xenbits.xensource.com Git - libvirt.git/commitdiff
Remove stale QEMU pidfiles
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 21 Apr 2009 19:14:50 +0000 (19:14 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 21 Apr 2009 19:14:50 +0000 (19:14 +0000)
ChangeLog
src/qemu_driver.c

index 28bda90a0fd9fbe00daf8f0f8a548fe6756b8ee1..13645f7914a6d57c0a859d5780c486bc36215424 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Apr 21 20:14:03 BST 2009 Daniel P. Berrange <berrange@redhat.com>
+
+       * src/qemu_driver.c: Remove pidfile when domain shuts down and
+       cleanup stale pidfile before domain startup.
+
 Tue Apr 21 14:39:03 BST 2009 Daniel P. Berrange <berrange@redhat.com>
 
        * po/POTFILES.in: Add vbox_tmpl.c file
index b4a0e6f498627647b6d12bea53a5c636f302ac10..f9fe2ba946d8a8e64a1981eace1606d8d3ee65d5 100644 (file)
@@ -1389,6 +1389,14 @@ static int qemudStartVMDaemon(virConnectPtr conn,
     if (qemuPrepareHostDevices(conn, vm->def) < 0)
         goto cleanup;
 
+    if ((ret = virFileDeletePid(driver->stateDir, vm->def->name)) != 0) {
+        virReportSystemError(conn, ret,
+                             _("Cannot remove stale PID file for %s"),
+                             vm->def->name);
+        goto cleanup;
+    }
+
+
     vm->def->id = driver->nextvmid++;
     if (qemudBuildCommandLine(conn, driver, vm->def,
                               qemuCmdFlags, &argv, &progenv,
@@ -1512,6 +1520,8 @@ cleanup:
 static void qemudShutdownVMDaemon(virConnectPtr conn ATTRIBUTE_UNUSED,
                                   struct qemud_driver *driver,
                                   virDomainObjPtr vm) {
+    int ret;
+
     if (!virDomainIsActive(vm))
         return;
 
@@ -1556,6 +1566,12 @@ static void qemudShutdownVMDaemon(virConnectPtr conn ATTRIBUTE_UNUSED,
         VIR_WARN(_("Failed to remove domain status for %s"),
                  vm->def->name);
     }
+    if ((ret = virFileDeletePid(driver->stateDir, vm->def->name)) != 0) {
+        char ebuf[1024];
+        VIR_WARN(_("Failed to remove PID file for %s: %s"),
+                 vm->def->name, virStrerror(errno, ebuf, sizeof ebuf));
+    }
+
     vm->pid = -1;
     vm->def->id = -1;
     vm->state = VIR_DOMAIN_SHUTOFF;