[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [REPOST PATCH 7/8] qemu: Introduce qemuBuildNVRAMCommandLine



Add new function to manage adding the NVRAM device options to the
command line removing that task from the mainline qemuBuildCommandLine.

Signed-off-by: John Ferlan <jferlan redhat com>
---
 src/qemu/qemu_command.c | 61 ++++++++++++++++++++++++++++++-------------------
 1 file changed, 38 insertions(+), 23 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index d6f7651..c63e97f 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3522,6 +3522,42 @@ qemuBuildNVRAMDevStr(virDomainNVRAMDefPtr dev)
     return NULL;
 }
 
+
+static int
+qemuBuildNVRAMCommandLine(virCommandPtr cmd,
+                          const virDomainDef *def,
+                          virQEMUCapsPtr qemuCaps)
+{
+    if (!def->nvram)
+        return 0;
+
+    if (ARCH_IS_PPC64(def->os.arch) &&
+        STRPREFIX(def->os.machine, "pseries")) {
+        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVRAM)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("nvram device is not supported by "
+                             "this QEMU binary"));
+            return -1;
+        }
+
+        char *optstr;
+        virCommandAddArg(cmd, "-global");
+        optstr = qemuBuildNVRAMDevStr(def->nvram);
+        if (!optstr)
+            return -1;
+        if (optstr)
+            virCommandAddArg(cmd, optstr);
+        VIR_FREE(optstr);
+    } else {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                      _("nvram device is only supported for PPC64"));
+        return -1;
+    }
+
+    return 0;
+}
+
+
 static char *
 qemuBuildVirtioInputDevStr(const virDomainDef *def,
                            virDomainInputDefPtr dev,
@@ -9232,30 +9268,9 @@ qemuBuildCommandLine(virConnectPtr conn,
     if (qemuBuildRNGCommandLine(logManager, cmd, def, qemuCaps) < 0)
         goto error;
 
-    if (def->nvram) {
-        if (ARCH_IS_PPC64(def->os.arch) &&
-            STRPREFIX(def->os.machine, "pseries")) {
-            if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVRAM)) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                               _("nvram device is not supported by "
-                                 "this QEMU binary"));
-                goto error;
-            }
+    if (qemuBuildNVRAMCommandLine(cmd, def, qemuCaps) < 0)
+        goto error;
 
-            char *optstr;
-            virCommandAddArg(cmd, "-global");
-            optstr = qemuBuildNVRAMDevStr(def->nvram);
-            if (!optstr)
-                goto error;
-            if (optstr)
-                virCommandAddArg(cmd, optstr);
-            VIR_FREE(optstr);
-        } else {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                          _("nvram device is only supported for PPC64"));
-            goto error;
-        }
-    }
     if (snapshot)
         virCommandAddArgList(cmd, "-loadvm", snapshot->def->name, NULL);
 
-- 
2.5.0


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]