]> xenbits.xensource.com Git - libvirt.git/commitdiff
scsi: Change order of checks in createVport
authorJohn Ferlan <jferlan@redhat.com>
Fri, 18 Nov 2016 12:44:52 +0000 (07:44 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 4 Jan 2017 22:09:59 +0000 (17:09 -0500)
Move the check for an already existing vHBA to the top of the function.
No sense in first decoding a provided parent if the next thing we're going
to do is fail if a provided wwnn/wwpn already exists.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/storage/storage_backend_scsi.c

index cf93fdcbe6a4a4c65d0771f4701afe6525a72926..b5c64bff269c030624766349739da58172cb4c5a 100644 (file)
@@ -706,20 +706,6 @@ createVport(virConnectPtr conn,
               conn, NULLSTR(configFile), NULLSTR(adapter->data.fchost.parent),
               adapter->data.fchost.wwnn, adapter->data.fchost.wwpn);
 
-    /* If a parent was provided, then let's make sure it's vhost capable */
-    if (adapter->data.fchost.parent) {
-        if (virGetSCSIHostNumber(adapter->data.fchost.parent, &parent_host) < 0)
-            return -1;
-
-        if (!virIsCapableFCHost(NULL, parent_host)) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("parent '%s' specified for vHBA "
-                             "is not vport capable"),
-                           adapter->data.fchost.parent);
-            return -1;
-        }
-    }
-
     /* If we find an existing HBA/vHBA within the fc_host sysfs
      * using the wwnn/wwpn, then a nodedev is already created for
      * this pool and we don't have to create the vHBA
@@ -736,6 +722,20 @@ createVport(virConnectPtr conn,
         goto cleanup;
     }
 
+    /* If a parent was provided, then let's make sure it's vhost capable */
+    if (adapter->data.fchost.parent) {
+        if (virGetSCSIHostNumber(adapter->data.fchost.parent, &parent_host) < 0)
+            goto cleanup;
+
+        if (!virIsCapableFCHost(NULL, parent_host)) {
+            virReportError(VIR_ERR_XML_ERROR,
+                           _("parent '%s' specified for vHBA "
+                             "is not vport capable"),
+                           adapter->data.fchost.parent);
+            goto cleanup;
+        }
+    }
+
     if (!adapter->data.fchost.parent) {
         if (!(parent_hoststr = virFindFCHostCapableVport(NULL))) {
             virReportError(VIR_ERR_XML_ERROR, "%s",