]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuPrepareNVRAM: Save domain conf only if domain's persistent
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 12 Nov 2014 17:09:46 +0000 (18:09 +0100)
committerCole Robinson <crobinso@redhat.com>
Sat, 15 Nov 2014 21:02:09 +0000 (16:02 -0500)
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>
(cherry picked from commit 54ddc08ddb3d86e90b48b655a51577761e20ac34)

src/qemu/qemu_process.c

index 3f08ae5ac0fca70076d7c5337476f2cf3d09e212..d254767beb9f03e6e990c7adf9ffcbbe41a3a181 100644 (file)
@@ -3853,13 +3853,13 @@ qemuProcessVerifyGuestCPU(virQEMUDriverPtr driver,
 
 static int
 qemuPrepareNVRAM(virQEMUDriverConfigPtr cfg,
-                 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 generated = false;
     bool created = false;
 
@@ -3886,12 +3886,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;
 
         generated = true;
 
-        if (virDomainSaveConfig(cfg->configDir, def) < 0)
+        if (vm->persistent &&
+            virDomainSaveConfig(cfg->configDir, vm->def) < 0)
             goto cleanup;
     }
 
@@ -4056,7 +4057,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