qemuPrepareNVRAM: Save domain conf only if domain's persistent

In one of my previous patches (3a3c3780b) I've tried to fix the
problem of nvram path disappearing on a domain that's been
started and shut down again. I fixed this by explicitly saving
domain's config file.  However, I did a bit of clumsy without
realizing we have a transient domains for which we don't save the
config file. Hence, any domain using UEFI became persistent.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2014-11-12 18:09:46 +01:00
parent 8d659b177f
commit 54ddc08ddb
1 changed files with 6 additions and 5 deletions

View File

@ -3902,13 +3902,13 @@ qemuProcessVerifyGuestCPU(virQEMUDriverPtr driver,
static int static int
qemuPrepareNVRAM(virQEMUDriverConfigPtr cfg, qemuPrepareNVRAM(virQEMUDriverConfigPtr cfg,
virDomainDefPtr def, virDomainObjPtr vm,
bool migrated) bool migrated)
{ {
int ret = -1; int ret = -1;
int srcFD = -1; int srcFD = -1;
int dstFD = -1; int dstFD = -1;
virDomainLoaderDefPtr loader = def->os.loader; virDomainLoaderDefPtr loader = vm->def->os.loader;
bool generated = false; bool generated = false;
bool created = false; bool created = false;
@ -3935,12 +3935,13 @@ qemuPrepareNVRAM(virQEMUDriverConfigPtr cfg,
if (!loader->nvram) { if (!loader->nvram) {
if (virAsprintf(&loader->nvram, if (virAsprintf(&loader->nvram,
"%s/lib/libvirt/qemu/nvram/%s_VARS.fd", "%s/lib/libvirt/qemu/nvram/%s_VARS.fd",
LOCALSTATEDIR, def->name) < 0) LOCALSTATEDIR, vm->def->name) < 0)
goto cleanup; goto cleanup;
generated = true; generated = true;
if (virDomainSaveConfig(cfg->configDir, def) < 0) if (vm->persistent &&
virDomainSaveConfig(cfg->configDir, vm->def) < 0)
goto cleanup; goto cleanup;
} }
@ -4105,7 +4106,7 @@ int qemuProcessStart(virConnectPtr conn,
* Fill them in prior to setting the domain def as transient. */ * Fill them in prior to setting the domain def as transient. */
VIR_DEBUG("Generating paths"); VIR_DEBUG("Generating paths");
if (qemuPrepareNVRAM(cfg, vm->def, migrateFrom) < 0) if (qemuPrepareNVRAM(cfg, vm, migrateFrom) < 0)
goto cleanup; goto cleanup;
/* Do this upfront, so any part of the startup process can add /* Do this upfront, so any part of the startup process can add