]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
lxc: Don't accidentaly reset autostart flag in virLXCProcessCleanup
authorPeter Krempa <pkrempa@redhat.com>
Tue, 28 Jul 2015 16:25:59 +0000 (18:25 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 28 Jul 2015 16:55:39 +0000 (18:55 +0200)
virDomainDeleteConfig is meant to delete the persistent config and thus
it resets vm->autostart. Copy parts of qemuProcessRemoveDomainStatus to
a new helper to avoid using the incorrect function.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1230071

src/lxc/lxc_process.c

index 87ee484364eb562acc62fdaa780e7aef789f8b36..e99b039755272ec5e67478ffeb1f0d4d712e1d7a 100644 (file)
@@ -137,6 +137,23 @@ virLXCProcessReboot(virLXCDriverPtr driver,
 }
 
 
+static void
+lxcProcessRemoveDomainStatus(virLXCDriverConfigPtr cfg,
+                              virDomainObjPtr vm)
+{
+    char ebuf[1024];
+    char *file = NULL;
+
+    if (virAsprintf(&file, "%s/%s.xml", cfg->stateDir, vm->def->name) < 0)
+        return;
+
+    if (unlink(file) < 0 && errno != ENOENT && errno != ENOTDIR)
+        VIR_WARN("Failed to remove domain XML for %s: %s",
+                 vm->def->name, virStrerror(errno, ebuf, sizeof(ebuf)));
+    VIR_FREE(file);
+}
+
+
 /**
  * virLXCProcessCleanup:
  * @driver: pointer to driver structure
@@ -180,7 +197,7 @@ static void virLXCProcessCleanup(virLXCDriverPtr driver,
     }
 
     virPidFileDelete(cfg->stateDir, vm->def->name);
-    virDomainDeleteConfig(cfg->stateDir, NULL, vm);
+    lxcProcessRemoveDomainStatus(cfg, vm);
 
     virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, reason);
     vm->pid = -1;