[libvirt] [PATCH 1/9] storage: Refactor iSCSI Source matching

John Ferlan jferlan at redhat.com
Thu Apr 2 17:39:38 UTC 2015


Create a separate iSCSI Source matching subroutine. Makes the calling
code a bit cleaner as well as sets up for future patches which need to
do better source hosts[0].name processing/checking

Signed-off-by: John Ferlan <jferlan at redhat.com>
---
 src/conf/storage_conf.c | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 8b1898b..4a38416 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -2291,6 +2291,28 @@ matchSCSIAdapterParent(virStoragePoolObjPtr pool,
 }
 
 
+static bool
+matchISCSISource(virStoragePoolObjPtr matchpool,
+                 virStoragePoolDefPtr def)
+{
+    if (matchpool->def->source.nhost == 1 && def->source.nhost == 1) {
+        if (STREQ(matchpool->def->source.hosts[0].name,
+                  def->source.hosts[0].name)) {
+            if ((matchpool->def->source.initiator.iqn) &&
+                (def->source.initiator.iqn)) {
+                if (STREQ(matchpool->def->source.initiator.iqn,
+                          def->source.initiator.iqn))
+                    return true;
+                else
+                    return false;
+            }
+            return true;
+        }
+    }
+    return false;
+}
+
+
 int
 virStoragePoolSourceFindDuplicate(virConnectPtr conn,
                                   virStoragePoolObjListPtr pools,
@@ -2390,17 +2412,8 @@ virStoragePoolSourceFindDuplicate(virConnectPtr conn,
         case VIR_STORAGE_POOL_ISCSI:
             matchpool = virStoragePoolSourceFindDuplicateDevices(pool, def);
             if (matchpool) {
-                if (matchpool->def->source.nhost == 1 && def->source.nhost == 1) {
-                    if (STREQ(matchpool->def->source.hosts[0].name, def->source.hosts[0].name)) {
-                        if ((matchpool->def->source.initiator.iqn) && (def->source.initiator.iqn)) {
-                            if (STREQ(matchpool->def->source.initiator.iqn, def->source.initiator.iqn))
-                                break;
-                            matchpool = NULL;
-                        }
-                        break;
-                    }
-                }
-                matchpool = NULL;
+                if (!matchISCSISource(matchpool, def))
+                    matchpool = NULL;
             }
             break;
         case VIR_STORAGE_POOL_FS:
-- 
2.1.0




More information about the libvir-list mailing list