From: Peter Krempa Date: Tue, 28 Jul 2015 16:25:59 +0000 (+0200) Subject: lxc: Don't accidentaly reset autostart flag in virLXCProcessCleanup X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=dbb0baa5a74cecdac332f3d9d82f33cf517af8dd;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git lxc: Don't accidentaly reset autostart flag in virLXCProcessCleanup 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 --- diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 87ee48436..e99b03975 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;