On 11/12/14 18:26, Michal Privoznik wrote: > 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@xxxxxxxxxx> > --- > src/qemu/qemu_process.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > index c0ab341..1f44683 100644 > --- a/src/qemu/qemu_process.c > +++ b/src/qemu/qemu_process.c > @@ -3902,13 +3902,13 @@ qemuProcessVerifyGuestCPU(virQEMUDriverPtr driver, > > static int > qemuPrepareNVRAM(virQEMUDriverConfigPtr cfg, This function is called just before cloning vm->def into vm->newDef and thus vm->def becoming the live definition. > - virDomainDefPtr def, > + virDomainObjPtr vm, > bool migrated) > { > int ret = -1; > int srcFD = -1; > int dstFD = -1; > - virDomainLoaderDefPtr loader = def->os.loader; > + virDomainLoaderDefPtr loader = vm->def->os.loader; > bool created = false; > > /* Unless domain has RO loader of pflash type, we have > @@ -3934,12 +3934,13 @@ qemuPrepareNVRAM(virQEMUDriverConfigPtr cfg, > if (!loader->nvram) { > if (virAsprintf(&loader->nvram, > "%s/lib/libvirt/qemu/nvram/%s_VARS.fd", > - LOCALSTATEDIR, def->name) < 0) > + LOCALSTATEDIR, vm->def->name) < 0) > goto cleanup; > > loader->generated = true; > > - if (virDomainSaveConfig(cfg->configDir, def) < 0) > + if (vm->persistent && > + virDomainSaveConfig(cfg->configDir, vm->def) < 0) So saving the vm->def here is okay. In other place you'd need to use the helper to get the right pointer according to the vm->persistent flag. > goto cleanup; > } > > @@ -4106,7 +4107,7 @@ int qemuProcessStart(virConnectPtr conn, > * Fill them in prior to setting the domain def as transient. */ > VIR_DEBUG("Generating paths"); > > - if (qemuPrepareNVRAM(cfg, vm->def, migrateFrom) < 0) > + if (qemuPrepareNVRAM(cfg, vm, migrateFrom) < 0) > goto cleanup; > > /* Do this upfront, so any part of the startup process can add > ACK, Peter
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list