diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c index 575e6a667e7e48061b1de468b60ed7221d00a04c..02fd4b643c225d6c534fb22b7c2ab87466d94a50 100644 --- a/src/storage/storage_backend_scsi.c +++ b/src/storage/storage_backend_scsi.c @@ -443,8 +443,10 @@ static int virStorageBackendSCSIStartPool(virConnectPtr conn, virStoragePoolObjPtr pool) { + const char *configFile = virStoragePoolObjGetConfigFile(pool); + if (pool->def->source.adapter.type == VIR_STORAGE_ADAPTER_TYPE_FC_HOST) - return createVport(conn, pool->def, pool->configFile, + return createVport(conn, pool->def, configFile, &pool->def->source.adapter.data.fchost); return 0; diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 91dd43ff8c3a9b82f685549b7821dacc7c092c0b..01644db28997b3de3c6cff7ff8f76689975cfb23 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -91,7 +91,7 @@ virStoragePoolUpdateInactive(virStoragePoolObjPtr *objptr) { virStoragePoolObjPtr obj = *objptr; - if (obj->configFile == NULL) { + if (!virStoragePoolObjGetConfigFile(obj)) { virStoragePoolObjRemove(&driver->pools, obj); *objptr = NULL; } else if (obj->newDef) { @@ -643,7 +643,7 @@ storagePoolIsPersistent(virStoragePoolPtr pool) if (virStoragePoolIsPersistentEnsureACL(pool->conn, obj->def) < 0) goto cleanup; - ret = obj->configFile ? 1 : 0; + ret = virStoragePoolObjGetConfigFile(obj) ? 1 : 0; cleanup: virStoragePoolObjUnlock(obj); @@ -849,7 +849,6 @@ storagePoolUndefine(virStoragePoolPtr pool) obj->autostartLink, virStrerror(errno, ebuf, sizeof(ebuf))); } - VIR_FREE(obj->configFile); VIR_FREE(obj->autostartLink); event = virStoragePoolEventLifecycleNew(obj->def->name, @@ -1250,7 +1249,7 @@ storagePoolGetAutostart(virStoragePoolPtr pool, if (virStoragePoolGetAutostartEnsureACL(pool->conn, obj->def) < 0) goto cleanup; - if (!obj->configFile) { + if (!virStoragePoolObjGetConfigFile(obj)) { *autostart = 0; } else { *autostart = obj->autostart; @@ -1268,6 +1267,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, int autostart) { virStoragePoolObjPtr obj; + const char *configFile; int ret = -1; storageDriverLock(); @@ -1277,7 +1277,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, if (virStoragePoolSetAutostartEnsureACL(pool->conn, obj->def) < 0) goto cleanup; - if (!obj->configFile) { + if (!(configFile = virStoragePoolObjGetConfigFile(obj))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("pool has no config file")); goto cleanup; @@ -1294,10 +1294,10 @@ storagePoolSetAutostart(virStoragePoolPtr pool, goto cleanup; } - if (symlink(obj->configFile, obj->autostartLink) < 0) { + if (symlink(configFile, obj->autostartLink) < 0) { virReportSystemError(errno, _("Failed to create symlink '%s' to '%s'"), - obj->autostartLink, obj->configFile); + obj->autostartLink, configFile); goto cleanup; } } else { diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 7cb5338c6f16072d35ec0e1446f06e3470d22b2c..e2f0a87b746ac49c3134519bec2b377b6b65fa03 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -4072,12 +4072,17 @@ testInterfaceDestroy(virInterfacePtr iface, static int testStoragePoolObjSetDefaults(virStoragePoolObjPtr obj) { + char *configFile; obj->def->capacity = defaultPoolCap; obj->def->allocation = defaultPoolAlloc; obj->def->available = defaultPoolCap - defaultPoolAlloc; - return VIR_STRDUP(obj->configFile, ""); + if (VIR_STRDUP(configFile, "") < 0) + return -1; + + virStoragePoolObjSetConfigFile(obj, configFile); + return 0; } @@ -4319,7 +4324,7 @@ testStoragePoolIsPersistent(virStoragePoolPtr pool) if (!(obj = testStoragePoolObjFindByUUID(privconn, pool->uuid))) return -1; - ret = obj->configFile ? 1 : 0; + ret = virStoragePoolObjGetConfigFile(obj) ? 1 : 0; virStoragePoolObjUnlock(obj); return ret; @@ -4485,7 +4490,7 @@ testStoragePoolCreateXML(virConnectPtr conn, /* *SetDefaults fills this in for the persistent pools, but this * would be a transient pool so remove it; otherwise, the Destroy * code will not Remove the pool */ - VIR_FREE(obj->configFile); + virStoragePoolObjSetConfigFile(obj, NULL); obj->active = true; @@ -4650,7 +4655,7 @@ testStoragePoolDestroy(virStoragePoolPtr pool) VIR_STORAGE_POOL_EVENT_STOPPED, 0); - if (obj->configFile == NULL) { + if (!(virStoragePoolObjGetConfigFile(obj))) { virStoragePoolObjRemove(&privconn->pools, obj); obj = NULL; } @@ -4756,11 +4761,10 @@ testStoragePoolGetAutostart(virStoragePoolPtr pool, if (!(obj = testStoragePoolObjFindByName(privconn, pool->name))) return -1; - if (!obj->configFile) { + if (!virStoragePoolObjGetConfigFile(obj)) *autostart = 0; - } else { + else *autostart = obj->autostart; - } virStoragePoolObjUnlock(obj); return 0; @@ -4778,7 +4782,7 @@ testStoragePoolSetAutostart(virStoragePoolPtr pool, if (!(obj = testStoragePoolObjFindByName(privconn, pool->name))) return -1; - if (!obj->configFile) { + if (!virStoragePoolObjGetConfigFile(obj)) { virReportError(VIR_ERR_INVALID_ARG, "%s", _("pool has no config file")); goto cleanup;