03cc27
From 6c30bd386f7039cf6f8828f4b8fa0865395828e1 Mon Sep 17 00:00:00 2001
03cc27
Message-Id: <6c30bd386f7039cf6f8828f4b8fa0865395828e1@dist-git>
0d6001
From: Pino Toscano <ptoscano@redhat.com>
0d6001
Date: Mon, 23 Mar 2020 08:49:57 +0100
0d6001
Subject: [PATCH] vmx: shortcut earlier few 'ignore' cases in virVMXParseDisk()
0d6001
MIME-Version: 1.0
0d6001
Content-Type: text/plain; charset=UTF-8
0d6001
Content-Transfer-Encoding: 8bit
0d6001
0d6001
Move earlier the checks for skipping a hard disk when parsing a CD-DROM,
0d6001
and for skipping a CD-ROM when parsing a hard disk. This should have no
0d6001
behaviour changes, and avoids to add repeated checks in following
0d6001
commits.
0d6001
0d6001
Signed-off-by: Pino Toscano <ptoscano@redhat.com>
0d6001
Reviewed-by: Ján Tomko <jtomko@redhat.com>
0d6001
Tested-by: Richard W.M. Jones <rjones@redhat.com>
0d6001
(cherry picked from commit 9a469c0d358bf3fd4b4e55b20360620d6fda44b5)
0d6001
0d6001
https://bugzilla.redhat.com/show_bug.cgi?id=1815269
0d6001
https://bugzilla.redhat.com/show_bug.cgi?id=1816035
0d6001
https://bugzilla.redhat.com/show_bug.cgi?id=1816034
0d6001
0d6001
Signed-off-by: Pino Toscano <ptoscano@redhat.com>
0d6001
Message-Id: <20200323074958.377314-2-ptoscano@redhat.com>
03cc27
Reviewed-by: Ján Tomko <jtomko@redhat.com>
0d6001
---
0d6001
 src/vmx/vmx.c | 48 ++++++++++++++++++++++++------------------------
0d6001
 1 file changed, 24 insertions(+), 24 deletions(-)
0d6001
0d6001
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
0d6001
index 937bf0c96b..89409870ff 100644
0d6001
--- a/src/vmx/vmx.c
0d6001
+++ b/src/vmx/vmx.c
0d6001
@@ -2215,7 +2215,21 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
0d6001
 
0d6001
     /* Setup virDomainDiskDef */
0d6001
     if (device == VIR_DOMAIN_DISK_DEVICE_DISK) {
0d6001
-        if (virFileHasSuffix(fileName, ".vmdk")) {
0d6001
+        if (virFileHasSuffix(fileName, ".iso") ||
0d6001
+            STREQ(fileName, "emptyBackingString") ||
0d6001
+            (deviceType &&
0d6001
+             (STRCASEEQ(deviceType, "atapi-cdrom") ||
0d6001
+              STRCASEEQ(deviceType, "cdrom-raw") ||
0d6001
+              (STRCASEEQ(deviceType, "scsi-passthru") &&
0d6001
+               STRPREFIX(fileName, "/vmfs/devices/cdrom/"))))) {
0d6001
+            /*
0d6001
+             * This function was called in order to parse a harddisk device,
0d6001
+             * but .iso files, 'atapi-cdrom', 'cdrom-raw', and 'scsi-passthru'
0d6001
+             * CDROM devices are for CDROM devices only. Just ignore it, another
0d6001
+             * call to this function to parse a CDROM device may handle it.
0d6001
+             */
0d6001
+            goto ignore;
0d6001
+        } else if (virFileHasSuffix(fileName, ".vmdk")) {
0d6001
             char *tmp;
0d6001
 
0d6001
             if (deviceType != NULL) {
0d6001
@@ -2251,20 +2265,6 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
0d6001
             if (mode)
0d6001
                 (*def)->transient = STRCASEEQ(mode,
0d6001
                                               "independent-nonpersistent");
0d6001
-        } else if (virFileHasSuffix(fileName, ".iso") ||
0d6001
-                   STREQ(fileName, "emptyBackingString") ||
0d6001
-                   (deviceType &&
0d6001
-                    (STRCASEEQ(deviceType, "atapi-cdrom") ||
0d6001
-                     STRCASEEQ(deviceType, "cdrom-raw") ||
0d6001
-                     (STRCASEEQ(deviceType, "scsi-passthru") &&
0d6001
-                      STRPREFIX(fileName, "/vmfs/devices/cdrom/"))))) {
0d6001
-            /*
0d6001
-             * This function was called in order to parse a harddisk device,
0d6001
-             * but .iso files, 'atapi-cdrom', 'cdrom-raw', and 'scsi-passthru'
0d6001
-             * CDROM devices are for CDROM devices only. Just ignore it, another
0d6001
-             * call to this function to parse a CDROM device may handle it.
0d6001
-             */
0d6001
-            goto ignore;
0d6001
         } else {
0d6001
             virReportError(VIR_ERR_INTERNAL_ERROR,
0d6001
                            _("Invalid or not yet handled value '%s' "
0d6001
@@ -2274,7 +2274,15 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
0d6001
             goto cleanup;
0d6001
         }
0d6001
     } else if (device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
0d6001
-        if (virFileHasSuffix(fileName, ".iso")) {
0d6001
+        if (virFileHasSuffix(fileName, ".vmdk")) {
0d6001
+            /*
0d6001
+             * This function was called in order to parse a CDROM device, but
0d6001
+             * .vmdk files are for harddisk devices only. Just ignore it,
0d6001
+             * another call to this function to parse a harddisk device may
0d6001
+             * handle it.
0d6001
+             */
0d6001
+            goto ignore;
0d6001
+        } else if (virFileHasSuffix(fileName, ".iso")) {
0d6001
             char *tmp;
0d6001
 
0d6001
             if (deviceType && STRCASENEQ(deviceType, "cdrom-image")) {
0d6001
@@ -2292,14 +2300,6 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
0d6001
                 goto cleanup;
0d6001
             }
0d6001
             VIR_FREE(tmp);
0d6001
-        } else if (virFileHasSuffix(fileName, ".vmdk")) {
0d6001
-            /*
0d6001
-             * This function was called in order to parse a CDROM device, but
0d6001
-             * .vmdk files are for harddisk devices only. Just ignore it,
0d6001
-             * another call to this function to parse a harddisk device may
0d6001
-             * handle it.
0d6001
-             */
0d6001
-            goto ignore;
0d6001
         } else if (deviceType && STRCASEEQ(deviceType, "atapi-cdrom")) {
0d6001
             virDomainDiskSetType(*def, VIR_STORAGE_TYPE_BLOCK);
0d6001
 
0d6001
-- 
03cc27
2.26.0
0d6001