From: John Ferlan Date: Wed, 5 Apr 2017 12:14:49 +0000 (-0400) Subject: conf: Introduce virStoragePoolObjSourceMatchTypeDIR X-Git-Tag: v3.3.0-rc1~165 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6ddd6ae8114fdf001f1f93dce05472c1144da604;p=thirdparty%2Flibvirt.git conf: Introduce virStoragePoolObjSourceMatchTypeDIR Refactor virStoragePoolObjSourceFindDuplicate into smaller units separated by the "supported" pool source type. The DIR, GLUSTER, and NETFS pools all can use "... ... ". Alter the logic slightly to return the matching pool or NULL rather than setting matchpool = pool and break. Easier to read that way. --- diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 6e585fa0d9..3bf888c985 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -853,6 +853,30 @@ virStoragePoolSourceISCSIMatch(virStoragePoolObjPtr matchpool, } +static virStoragePoolObjPtr +virStoragePoolObjSourceMatchTypeDIR(virStoragePoolObjPtr pool, + virStoragePoolDefPtr def) +{ + if (pool->def->type == VIR_STORAGE_POOL_DIR) { + if (STREQ(pool->def->target.path, def->target.path)) + return pool; + } else if (pool->def->type == VIR_STORAGE_POOL_GLUSTER) { + if (STREQ(pool->def->source.name, def->source.name) && + STREQ_NULLABLE(pool->def->source.dir, def->source.dir) && + virStoragePoolSourceMatchSingleHost(&pool->def->source, + &def->source)) + return pool; + } else if (pool->def->type == VIR_STORAGE_POOL_NETFS) { + if (STREQ(pool->def->source.dir, def->source.dir) && + virStoragePoolSourceMatchSingleHost(&pool->def->source, + &def->source)) + return pool; + } + + return NULL; +} + + int virStoragePoolObjSourceFindDuplicate(virConnectPtr conn, virStoragePoolObjListPtr pools, @@ -879,23 +903,9 @@ virStoragePoolObjSourceFindDuplicate(virConnectPtr conn, switch ((virStoragePoolType)pool->def->type) { case VIR_STORAGE_POOL_DIR: - if (STREQ(pool->def->target.path, def->target.path)) - matchpool = pool; - break; - case VIR_STORAGE_POOL_GLUSTER: - if (STREQ(pool->def->source.name, def->source.name) && - STREQ_NULLABLE(pool->def->source.dir, def->source.dir) && - virStoragePoolSourceMatchSingleHost(&pool->def->source, - &def->source)) - matchpool = pool; - break; - case VIR_STORAGE_POOL_NETFS: - if (STREQ(pool->def->source.dir, def->source.dir) && - virStoragePoolSourceMatchSingleHost(&pool->def->source, - &def->source)) - matchpool = pool; + matchpool = virStoragePoolObjSourceMatchTypeDIR(pool, def); break; case VIR_STORAGE_POOL_SCSI: