]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuFirmwareFillDomain: Don't fill in firmware for network backed nvram
authorPeter Krempa <pkrempa@redhat.com>
Fri, 3 Jun 2022 11:22:42 +0000 (13:22 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 14 Jun 2022 13:53:11 +0000 (15:53 +0200)
Prepare for network backed nvram by refusing the reset of nvram on boot
and don't check whether it exists. We will not support filling it from a
template.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Tested-by: Rohit Kumar <rohit.kumar3@nutanix.com>
src/qemu/qemu_firmware.c

index dd4273f73a86f5ec27611c2eb24d4ff9cef1d212..a2199789629397e9a0a7f66e597d3abf82de649a 100644 (file)
@@ -1371,10 +1371,22 @@ qemuFirmwareFillDomain(virQEMUDriver *driver,
             def->os.loader->nvramTemplate)
             return 0;
 
-        if (!reset_nvram && def->os.loader->nvram &&
-            virStorageSourceIsLocalStorage(def->os.loader->nvram) &&
-            virFileExists(def->os.loader->nvram->path))
-            return 0;
+        if (def->os.loader->nvram) {
+            if (!virStorageSourceIsLocalStorage(def->os.loader->nvram)) {
+                if (reset_nvram) {
+                    virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                                   _("resetting of nvram is not supported with network backed nvram"));
+                    return -1;
+                }
+
+                /* we don't scrutinize whether NVRAM image accessed via network
+                 * is present */
+                return 0;
+            }
+
+            if (!reset_nvram && virFileExists(def->os.loader->nvram->path))
+                return 0;
+        }
 
         /* ... then we want to consult JSON FW descriptors first,
          * but we don't want to fail if we haven't found a match. */