mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 06:50:22 +03:00
conf: Introduce virStoragePoolObjSourceMatchTypeDIR
Refactor virStoragePoolObjSourceFindDuplicate into smaller units separated by the "supported" pool source type. The DIR, GLUSTER, and NETFS pools all can use "<source>... <dir='%s'/>... </source>". Alter the logic slightly to return the matching pool or NULL rather than setting matchpool = pool and break. Easier to read that way.
This commit is contained in:
parent
b595cc05e8
commit
6ddd6ae811
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user