[libvirt] [PATCH] lxc: Don't accidentaly reset autostart flag in virLXCProcessCleanup

Peter Krempa pkrempa at redhat.com
Tue Jul 28 16:28:58 UTC 2015


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 | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
index 87ee484..e99b039 100644
--- a/src/lxc/lxc_process.c
+++ b/src/lxc/lxc_process.c
@@ -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;
-- 
2.4.5




More information about the libvir-list mailing list