/*
* matchFCHostToSCSIHost:
*
- * @conn: Connection pointer
* @fchost: fc_host adapter ptr (either def or pool->def)
* @scsi_hostnum: Already determined "scsi_pool" hostnum
*
* fc_adapter host# and the scsi_host host#
*/
static bool
-matchFCHostToSCSIHost(virConnectPtr conn,
- virStorageAdapterFCHostPtr fchost,
+matchFCHostToSCSIHost(virStorageAdapterFCHostPtr fchost,
unsigned int scsi_hostnum)
{
+ virConnectPtr conn = NULL;
bool ret = false;
char *name = NULL;
char *scsi_host_name = NULL;
* If the parent fc_hostnum is the same as the scsi_hostnum, we
* have a match.
*/
- if (conn && !fchost->parent) {
+ if (!fchost->parent &&
+ (conn = virGetConnectNodeDev())) {
if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0)
goto cleanup;
if ((parent_name = virNodeDeviceGetParentName(conn,
VIR_FREE(name);
VIR_FREE(parent_name);
VIR_FREE(scsi_host_name);
+ virConnectClose(conn);
return ret;
}
static virStoragePoolObjPtr
virStoragePoolObjSourceMatchTypeISCSI(virStoragePoolObjPtr obj,
- virStoragePoolDefPtr def,
- virConnectPtr conn)
+ virStoragePoolDefPtr def)
{
virStorageAdapterPtr pool_adapter = &obj->def->source.adapter;
virStorageAdapterPtr def_adapter = &def->source.adapter;
if (getSCSIHostNumber(def_scsi_host, &scsi_hostnum) < 0)
return NULL;
- if (matchFCHostToSCSIHost(conn, pool_fchost, scsi_hostnum))
+ if (matchFCHostToSCSIHost(pool_fchost, scsi_hostnum))
return obj;
} else if (pool_adapter->type == VIR_STORAGE_ADAPTER_TYPE_SCSI_HOST &&
if (getSCSIHostNumber(pool_scsi_host, &scsi_hostnum) < 0)
return NULL;
- if (matchFCHostToSCSIHost(conn, def_fchost, scsi_hostnum))
+ if (matchFCHostToSCSIHost(def_fchost, scsi_hostnum))
return obj;
}
struct _virStoragePoolObjFindDuplicateData {
- virConnectPtr conn;
virStoragePoolDefPtr def;
};
case VIR_STORAGE_POOL_SCSI:
if (data->def->type == obj->def->type &&
- virStoragePoolObjSourceMatchTypeISCSI(obj, data->def, data->conn))
+ virStoragePoolObjSourceMatchTypeISCSI(obj, data->def))
return 1;
break;
int
-virStoragePoolObjSourceFindDuplicate(virConnectPtr conn,
- virStoragePoolObjListPtr pools,
+virStoragePoolObjSourceFindDuplicate(virStoragePoolObjListPtr pools,
virStoragePoolDefPtr def)
{
- struct _virStoragePoolObjFindDuplicateData data = { .conn = conn,
- .def = def };
+ struct _virStoragePoolObjFindDuplicateData data = {.def = def};
virStoragePoolObjPtr obj = NULL;
virObjectRWLockRead(pools);
if (virStoragePoolCreateXMLEnsureACL(conn, newDef) < 0)
goto cleanup;
- if (virStoragePoolObjSourceFindDuplicate(conn, driver->pools, newDef) < 0)
+ if (virStoragePoolObjSourceFindDuplicate(driver->pools, newDef) < 0)
goto cleanup;
if ((backend = virStorageBackendForType(newDef->type)) == NULL)
if (virStoragePoolDefineXMLEnsureACL(conn, newDef) < 0)
goto cleanup;
- if (virStoragePoolObjSourceFindDuplicate(conn, driver->pools, newDef) < 0)
+ if (virStoragePoolObjSourceFindDuplicate(driver->pools, newDef) < 0)
goto cleanup;
if (virStorageBackendForType(newDef->type) == NULL)