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(a)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