In preparation for privatizing the object, use the accessor to fetch
the obj->def instead of the direct reference.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/storage/storage_driver.c | 411 ++++++++++++++++++++++++-------------------
1 file changed, 234 insertions(+), 177 deletions(-)
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index d08dedd879..b0edf9f885 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -104,17 +104,17 @@ virStoragePoolUpdateInactive(virStoragePoolObjPtr *objptr)
static void
storagePoolUpdateState(virStoragePoolObjPtr obj)
{
+ virStoragePoolDefPtr def = virStoragePoolObjGetDef(obj);
bool active = false;
virStorageBackendPtr backend;
char *stateFile;
- if (!(stateFile = virFileBuildPath(driver->stateDir,
- obj->def->name, ".xml")))
+ if (!(stateFile = virFileBuildPath(driver->stateDir, def->name,
".xml")))
goto cleanup;
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL) {
+ if ((backend = virStorageBackendForType(def->type)) == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Missing backend %d"), obj->def->type);
+ _("Missing backend %d"), def->type);
goto cleanup;
}
@@ -124,7 +124,7 @@ storagePoolUpdateState(virStoragePoolObjPtr obj)
backend->checkPool(obj, &active) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to initialize storage pool '%s':
%s"),
- obj->def->name, virGetLastErrorMessage());
+ def->name, virGetLastErrorMessage());
active = false;
}
@@ -139,7 +139,7 @@ storagePoolUpdateState(virStoragePoolObjPtr obj)
backend->stopPool(NULL, obj);
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to restart storage pool '%s':
%s"),
- obj->def->name, virGetLastErrorMessage());
+ def->name, virGetLastErrorMessage());
active = false;
}
}
@@ -186,11 +186,12 @@ storageDriverAutostart(void)
for (i = 0; i < driver->pools.count; i++) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
+ virStoragePoolDefPtr def = virStoragePoolObjGetDef(obj);
virStorageBackendPtr backend;
bool started = false;
virStoragePoolObjLock(obj);
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL) {
+ if ((backend = virStorageBackendForType(def->type)) == NULL) {
virStoragePoolObjUnlock(obj);
continue;
}
@@ -201,7 +202,7 @@ storageDriverAutostart(void)
backend->startPool(conn, obj) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to autostart storage pool '%s':
%s"),
- obj->def->name, virGetLastErrorMessage());
+ def->name, virGetLastErrorMessage());
virStoragePoolObjUnlock(obj);
continue;
}
@@ -212,10 +213,9 @@ storageDriverAutostart(void)
char *stateFile;
virStoragePoolObjClearVols(obj);
- stateFile = virFileBuildPath(driver->stateDir,
- obj->def->name, ".xml");
+ stateFile = virFileBuildPath(driver->stateDir, def->name,
".xml");
if (!stateFile ||
- virStoragePoolSaveState(stateFile, obj->def) < 0 ||
+ virStoragePoolSaveState(stateFile, def) < 0 ||
backend->refreshPool(conn, obj) < 0) {
if (stateFile)
unlink(stateFile);
@@ -223,7 +223,7 @@ storageDriverAutostart(void)
backend->stopPool(conn, obj);
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to autostart storage pool '%s':
%s"),
- obj->def->name, virGetLastErrorMessage());
+ def->name, virGetLastErrorMessage());
} else {
virStoragePoolObjSetActive(obj, true);
}
@@ -442,6 +442,7 @@ storagePoolLookupByUUID(virConnectPtr conn,
const unsigned char *uuid)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStoragePoolPtr pool = NULL;
storageDriverLock();
@@ -449,11 +450,12 @@ storagePoolLookupByUUID(virConnectPtr conn,
storageDriverUnlock();
if (!obj)
return NULL;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolLookupByUUIDEnsureACL(conn, obj->def) < 0)
+ if (virStoragePoolLookupByUUIDEnsureACL(conn, def) < 0)
goto cleanup;
- pool = virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,
NULL);
+ pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
cleanup:
virStoragePoolObjUnlock(obj);
@@ -465,15 +467,17 @@ storagePoolLookupByName(virConnectPtr conn,
const char *name)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStoragePoolPtr pool = NULL;
if (!(obj = storagePoolObjFindByName(name)))
return NULL;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolLookupByNameEnsureACL(conn, obj->def) < 0)
+ if (virStoragePoolLookupByNameEnsureACL(conn, def) < 0)
goto cleanup;
- pool = virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,
NULL);
+ pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
cleanup:
virStoragePoolObjUnlock(obj);
@@ -484,16 +488,17 @@ static virStoragePoolPtr
storagePoolLookupByVolume(virStorageVolPtr vol)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStoragePoolPtr pool = NULL;
if (!(obj = storagePoolObjFindByName(vol->pool)))
return NULL;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolLookupByVolumeEnsureACL(vol->conn, obj->def) < 0)
+ if (virStoragePoolLookupByVolumeEnsureACL(vol->conn, def) < 0)
goto cleanup;
- pool = virGetStoragePool(vol->conn, obj->def->name, obj->def->uuid,
- NULL, NULL);
+ pool = virGetStoragePool(vol->conn, def->name, def->uuid, NULL, NULL);
cleanup:
virStoragePoolObjUnlock(obj);
@@ -614,12 +619,14 @@ static int
storagePoolIsActive(virStoragePoolPtr pool)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
int ret = -1;
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolIsActiveEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolIsActiveEnsureACL(pool->conn, def) < 0)
goto cleanup;
ret = virStoragePoolObjIsActive(obj);
@@ -634,12 +641,14 @@ static int
storagePoolIsPersistent(virStoragePoolPtr pool)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
int ret = -1;
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolIsPersistentEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolIsPersistentEnsureACL(pool->conn, def) < 0)
goto cleanup;
ret = virStoragePoolObjGetConfigFile(obj) ? 1 : 0;
@@ -655,8 +664,9 @@ storagePoolCreateXML(virConnectPtr conn,
const char *xml,
unsigned int flags)
{
- virStoragePoolDefPtr def;
+ virStoragePoolDefPtr newDef;
virStoragePoolObjPtr obj = NULL;
+ virStoragePoolDefPtr def;
virStoragePoolPtr pool = NULL;
virStorageBackendPtr backend;
virObjectEventPtr event = NULL;
@@ -671,24 +681,25 @@ storagePoolCreateXML(virConnectPtr conn,
VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, NULL);
storageDriverLock();
- if (!(def = virStoragePoolDefParseString(xml)))
+ if (!(newDef = virStoragePoolDefParseString(xml)))
goto cleanup;
- if (virStoragePoolCreateXMLEnsureACL(conn, def) < 0)
+ if (virStoragePoolCreateXMLEnsureACL(conn, newDef) < 0)
goto cleanup;
- if (virStoragePoolObjIsDuplicate(&driver->pools, def, 1) < 0)
+ if (virStoragePoolObjIsDuplicate(&driver->pools, newDef, 1) < 0)
goto cleanup;
- if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, def) < 0)
+ if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, newDef) <
0)
goto cleanup;
- if ((backend = virStorageBackendForType(def->type)) == NULL)
+ if ((backend = virStorageBackendForType(newDef->type)) == NULL)
goto cleanup;
- if (!(obj = virStoragePoolObjAssignDef(&driver->pools, def)))
+ if (!(obj = virStoragePoolObjAssignDef(&driver->pools, newDef)))
goto cleanup;
- def = NULL;
+ newDef = NULL;
+ def = virStoragePoolObjGetDef(obj);
if (backend->buildPool) {
if (flags & VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE)
@@ -713,11 +724,10 @@ storagePoolCreateXML(virConnectPtr conn,
goto cleanup;
}
- stateFile = virFileBuildPath(driver->stateDir,
- obj->def->name, ".xml");
+ stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
virStoragePoolObjClearVols(obj);
- if (!stateFile || virStoragePoolSaveState(stateFile, obj->def) < 0 ||
+ if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 ||
backend->refreshPool(conn, obj) < 0) {
if (stateFile)
unlink(stateFile);
@@ -728,19 +738,19 @@ storagePoolCreateXML(virConnectPtr conn,
goto cleanup;
}
- event = virStoragePoolEventLifecycleNew(obj->def->name,
- obj->def->uuid,
+ event = virStoragePoolEventLifecycleNew(def->name,
+ def->uuid,
VIR_STORAGE_POOL_EVENT_STARTED,
0);
- VIR_INFO("Creating storage pool '%s'", obj->def->name);
+ VIR_INFO("Creating storage pool '%s'", def->name);
virStoragePoolObjSetActive(obj, true);
- pool = virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,
NULL);
+ pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
cleanup:
VIR_FREE(stateFile);
- virStoragePoolDefFree(def);
+ virStoragePoolDefFree(newDef);
if (event)
virObjectEventStateQueue(driver->storageEventState, event);
if (obj)
@@ -754,38 +764,40 @@ storagePoolDefineXML(virConnectPtr conn,
const char *xml,
unsigned int flags)
{
- virStoragePoolDefPtr def;
+ virStoragePoolDefPtr newDef;
virStoragePoolObjPtr obj = NULL;
+ virStoragePoolDefPtr def;
virStoragePoolPtr pool = NULL;
virObjectEventPtr event = NULL;
virCheckFlags(0, NULL);
storageDriverLock();
- if (!(def = virStoragePoolDefParseString(xml)))
+ if (!(newDef = virStoragePoolDefParseString(xml)))
goto cleanup;
- if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
+ if (virXMLCheckIllegalChars("name", newDef->name, "\n") <
0)
goto cleanup;
- if (virStoragePoolDefineXMLEnsureACL(conn, def) < 0)
+ if (virStoragePoolDefineXMLEnsureACL(conn, newDef) < 0)
goto cleanup;
- if (virStoragePoolObjIsDuplicate(&driver->pools, def, 0) < 0)
+ if (virStoragePoolObjIsDuplicate(&driver->pools, newDef, 0) < 0)
goto cleanup;
- if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, def) < 0)
+ if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, newDef) <
0)
goto cleanup;
- if (virStorageBackendForType(def->type) == NULL)
+ if (virStorageBackendForType(newDef->type) == NULL)
goto cleanup;
- if (!(obj = virStoragePoolObjAssignDef(&driver->pools, def)))
+ if (!(obj = virStoragePoolObjAssignDef(&driver->pools, newDef)))
goto cleanup;
+ newDef = NULL;
+ def = virStoragePoolObjGetDef(obj);
if (virStoragePoolObjSaveDef(driver, obj, def) < 0) {
virStoragePoolObjRemove(&driver->pools, obj);
- def = NULL;
obj = NULL;
goto cleanup;
}
@@ -794,15 +806,13 @@ storagePoolDefineXML(virConnectPtr conn,
VIR_STORAGE_POOL_EVENT_DEFINED,
0);
- def = NULL;
-
- VIR_INFO("Defining storage pool '%s'", obj->def->name);
- pool = virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,
NULL);
+ VIR_INFO("Defining storage pool '%s'", def->name);
+ pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
cleanup:
if (event)
virObjectEventStateQueue(driver->storageEventState, event);
- virStoragePoolDefFree(def);
+ virStoragePoolDefFree(newDef);
if (obj)
virStoragePoolObjUnlock(obj);
storageDriverUnlock();
@@ -813,6 +823,7 @@ static int
storagePoolUndefine(virStoragePoolPtr pool)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
const char *autostartLink;
virObjectEventPtr event = NULL;
int ret = -1;
@@ -820,21 +831,22 @@ storagePoolUndefine(virStoragePoolPtr pool)
storageDriverLock();
if (!(obj = storagePoolObjFindByUUID(pool->uuid, pool->name)))
goto cleanup;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolUndefineEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolUndefineEnsureACL(pool->conn, def) < 0)
goto cleanup;
if (virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is still active"),
- obj->def->name);
+ def->name);
goto cleanup;
}
if (virStoragePoolObjGetAsyncjobs(obj) > 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("pool '%s' has asynchronous jobs running."),
- obj->def->name);
+ def->name);
goto cleanup;
}
@@ -849,13 +861,12 @@ storagePoolUndefine(virStoragePoolPtr pool)
autostartLink, virStrerror(errno, ebuf, sizeof(ebuf)));
}
-
- event = virStoragePoolEventLifecycleNew(obj->def->name,
- obj->def->uuid,
+ event = virStoragePoolEventLifecycleNew(def->name,
+ def->uuid,
VIR_STORAGE_POOL_EVENT_UNDEFINED,
0);
- VIR_INFO("Undefining storage pool '%s'", obj->def->name);
+ VIR_INFO("Undefining storage pool '%s'", def->name);
virStoragePoolObjRemove(&driver->pools, obj);
obj = NULL;
ret = 0;
@@ -874,6 +885,7 @@ storagePoolCreate(virStoragePoolPtr pool,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
virObjectEventPtr event = NULL;
int ret = -1;
@@ -889,17 +901,18 @@ storagePoolCreate(virStoragePoolPtr pool,
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolCreateEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolCreateEnsureACL(pool->conn, def) < 0)
goto cleanup;
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL)
+ if ((backend = virStorageBackendForType(def->type)) == NULL)
goto cleanup;
if (virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is already active"),
- obj->def->name);
+ def->name);
goto cleanup;
}
@@ -916,16 +929,15 @@ storagePoolCreate(virStoragePoolPtr pool,
}
}
- VIR_INFO("Starting up storage pool '%s'", obj->def->name);
+ VIR_INFO("Starting up storage pool '%s'", def->name);
if (backend->startPool &&
backend->startPool(pool->conn, obj) < 0)
goto cleanup;
- stateFile = virFileBuildPath(driver->stateDir,
- obj->def->name, ".xml");
+ stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
virStoragePoolObjClearVols(obj);
- if (!stateFile || virStoragePoolSaveState(stateFile, obj->def) < 0 ||
+ if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 ||
backend->refreshPool(pool->conn, obj) < 0) {
if (stateFile)
unlink(stateFile);
@@ -934,8 +946,8 @@ storagePoolCreate(virStoragePoolPtr pool,
goto cleanup;
}
- event = virStoragePoolEventLifecycleNew(obj->def->name,
- obj->def->uuid,
+ event = virStoragePoolEventLifecycleNew(def->name,
+ def->uuid,
VIR_STORAGE_POOL_EVENT_STARTED,
0);
@@ -956,23 +968,25 @@ storagePoolBuild(virStoragePoolPtr pool,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
virObjectEventPtr event = NULL;
int ret = -1;
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolBuildEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolBuildEnsureACL(pool->conn, def) < 0)
goto cleanup;
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL)
+ if ((backend = virStorageBackendForType(def->type)) == NULL)
goto cleanup;
if (virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is already active"),
- obj->def->name);
+ def->name);
goto cleanup;
}
@@ -999,6 +1013,7 @@ static int
storagePoolDestroy(virStoragePoolPtr pool)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
virObjectEventPtr event = NULL;
char *stateFile = NULL;
@@ -1007,31 +1022,30 @@ storagePoolDestroy(virStoragePoolPtr pool)
storageDriverLock();
if (!(obj = storagePoolObjFindByUUID(pool->uuid, pool->name)))
goto cleanup;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolDestroyEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolDestroyEnsureACL(pool->conn, def) < 0)
goto cleanup;
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL)
+ if ((backend = virStorageBackendForType(def->type)) == NULL)
goto cleanup;
- VIR_INFO("Destroying storage pool '%s'", obj->def->name);
+ VIR_INFO("Destroying storage pool '%s'", def->name);
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
if (virStoragePoolObjGetAsyncjobs(obj) > 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("pool '%s' has asynchronous jobs running."),
- obj->def->name);
+ def->name);
goto cleanup;
}
- if (!(stateFile = virFileBuildPath(driver->stateDir,
- obj->def->name,
- ".xml")))
+ if (!(stateFile = virFileBuildPath(driver->stateDir, def->name,
".xml")))
goto cleanup;
unlink(stateFile);
@@ -1043,8 +1057,8 @@ storagePoolDestroy(virStoragePoolPtr pool)
virStoragePoolObjClearVols(obj);
- event = virStoragePoolEventLifecycleNew(obj->def->name,
- obj->def->uuid,
+ event = virStoragePoolEventLifecycleNew(def->name,
+ def->uuid,
VIR_STORAGE_POOL_EVENT_STOPPED,
0);
@@ -1068,6 +1082,7 @@ storagePoolDelete(virStoragePoolPtr pool,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
virObjectEventPtr event = NULL;
char *stateFile = NULL;
@@ -1075,32 +1090,31 @@ storagePoolDelete(virStoragePoolPtr pool,
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolDeleteEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolDeleteEnsureACL(pool->conn, def) < 0)
goto cleanup;
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL)
+ if ((backend = virStorageBackendForType(def->type)) == NULL)
goto cleanup;
- VIR_INFO("Deleting storage pool '%s'", obj->def->name);
+ VIR_INFO("Deleting storage pool '%s'", def->name);
if (virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is still active"),
- obj->def->name);
+ def->name);
goto cleanup;
}
if (virStoragePoolObjGetAsyncjobs(obj) > 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("pool '%s' has asynchronous jobs running."),
- obj->def->name);
+ def->name);
goto cleanup;
}
- if (!(stateFile = virFileBuildPath(driver->stateDir,
- obj->def->name,
- ".xml")))
+ if (!(stateFile = virFileBuildPath(driver->stateDir, def->name,
".xml")))
goto cleanup;
unlink(stateFile);
@@ -1134,6 +1148,7 @@ storagePoolRefresh(virStoragePoolPtr pool,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
int ret = -1;
virObjectEventPtr event = NULL;
@@ -1143,23 +1158,24 @@ storagePoolRefresh(virStoragePoolPtr pool,
storageDriverLock();
if (!(obj = storagePoolObjFindByUUID(pool->uuid, pool->name)))
goto cleanup;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolRefreshEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolRefreshEnsureACL(pool->conn, def) < 0)
goto cleanup;
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL)
+ if ((backend = virStorageBackendForType(def->type)) == NULL)
goto cleanup;
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
if (virStoragePoolObjGetAsyncjobs(obj) > 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("pool '%s' has asynchronous jobs running."),
- obj->def->name);
+ def->name);
goto cleanup;
}
@@ -1168,8 +1184,8 @@ storagePoolRefresh(virStoragePoolPtr pool,
if (backend->stopPool)
backend->stopPool(pool->conn, obj);
- event = virStoragePoolEventLifecycleNew(obj->def->name,
- obj->def->uuid,
+ event = virStoragePoolEventLifecycleNew(def->name,
+ def->uuid,
VIR_STORAGE_POOL_EVENT_STOPPED,
0);
virStoragePoolObjSetActive(obj, false);
@@ -1179,8 +1195,8 @@ storagePoolRefresh(virStoragePoolPtr pool,
goto cleanup;
}
- event = virStoragePoolEventRefreshNew(obj->def->name,
- obj->def->uuid);
+ event = virStoragePoolEventRefreshNew(def->name,
+ def->uuid);
ret = 0;
cleanup:
@@ -1198,15 +1214,17 @@ storagePoolGetInfo(virStoragePoolPtr pool,
virStoragePoolInfoPtr info)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
int ret = -1;
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolGetInfoEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolGetInfoEnsureACL(pool->conn, def) < 0)
goto cleanup;
- if (virStorageBackendForType(obj->def->type) == NULL)
+ if (virStorageBackendForType(def->type) == NULL)
goto cleanup;
memset(info, 0, sizeof(virStoragePoolInfo));
@@ -1214,9 +1232,9 @@ storagePoolGetInfo(virStoragePoolPtr pool,
info->state = VIR_STORAGE_POOL_RUNNING;
else
info->state = VIR_STORAGE_POOL_INACTIVE;
- info->capacity = obj->def->capacity;
- info->allocation = obj->def->allocation;
- info->available = obj->def->available;
+ info->capacity = def->capacity;
+ info->allocation = def->allocation;
+ info->available = def->available;
ret = 0;
cleanup:
@@ -1230,22 +1248,26 @@ storagePoolGetXMLDesc(virStoragePoolPtr pool,
{
virStoragePoolObjPtr obj;
virStoragePoolDefPtr def;
+ virStoragePoolDefPtr newDef;
+ virStoragePoolDefPtr curDef;
char *ret = NULL;
virCheckFlags(VIR_STORAGE_XML_INACTIVE, NULL);
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return NULL;
+ def = virStoragePoolObjGetDef(obj);
+ newDef = virStoragePoolObjGetNewDef(obj);
- if (virStoragePoolGetXMLDescEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolGetXMLDescEnsureACL(pool->conn, def) < 0)
goto cleanup;
- if ((flags & VIR_STORAGE_XML_INACTIVE) && obj->newDef)
- def = obj->newDef;
+ if ((flags & VIR_STORAGE_XML_INACTIVE) && newDef)
+ curDef = newDef;
else
- def = obj->def;
+ curDef = def;
- ret = virStoragePoolDefFormat(def);
+ ret = virStoragePoolDefFormat(curDef);
cleanup:
virStoragePoolObjUnlock(obj);
@@ -1262,7 +1284,8 @@ storagePoolGetAutostart(virStoragePoolPtr pool,
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
- if (virStoragePoolGetAutostartEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolGetAutostartEnsureACL(pool->conn,
+ virStoragePoolObjGetDef(obj)) < 0)
goto cleanup;
*autostart = virStoragePoolObjIsAutostart(obj) ? 1 : 0;
@@ -1289,7 +1312,8 @@ storagePoolSetAutostart(virStoragePoolPtr pool,
if (!(obj = storagePoolObjFindByUUID(pool->uuid, pool->name)))
goto cleanup;
- if (virStoragePoolSetAutostartEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolSetAutostartEnsureACL(pool->conn,
+ virStoragePoolObjGetDef(obj)) < 0)
goto cleanup;
if (!(configFile = virStoragePoolObjGetConfigFile(obj))) {
@@ -1343,17 +1367,19 @@ static int
storagePoolNumOfVolumes(virStoragePoolPtr pool)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
int ret = -1;
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolNumOfVolumesEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolNumOfVolumesEnsureACL(pool->conn, def) < 0)
goto cleanup;
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
@@ -1372,17 +1398,19 @@ storagePoolListVolumes(virStoragePoolPtr pool,
int maxnames)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
int n = -1;
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolListVolumesEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolListVolumesEnsureACL(pool->conn, def) < 0)
goto cleanup;
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
@@ -1401,19 +1429,21 @@ storagePoolListAllVolumes(virStoragePoolPtr pool,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
int ret = -1;
virCheckFlags(0, -1);
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStoragePoolListAllVolumesEnsureACL(pool->conn, obj->def) < 0)
+ if (virStoragePoolListAllVolumesEnsureACL(pool->conn, def) < 0)
goto cleanup;
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
@@ -1432,15 +1462,17 @@ storageVolLookupByName(virStoragePoolPtr pool,
const char *name)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageVolDefPtr voldef;
virStorageVolPtr vol = NULL;
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return NULL;
+ def = virStoragePoolObjGetDef(obj);
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
@@ -1453,10 +1485,10 @@ storageVolLookupByName(virStoragePoolPtr pool,
goto cleanup;
}
- if (virStorageVolLookupByNameEnsureACL(pool->conn, obj->def, voldef) < 0)
+ if (virStorageVolLookupByNameEnsureACL(pool->conn, def, voldef) < 0)
goto cleanup;
- vol = virGetStorageVol(pool->conn, obj->def->name, voldef->name,
+ vol = virGetStorageVol(pool->conn, def->name, voldef->name,
voldef->key, NULL, NULL);
cleanup:
@@ -1474,26 +1506,26 @@ storageVolLookupByKey(virConnectPtr conn,
storageDriverLock();
for (i = 0; i < driver->pools.count && !vol; i++) {
- virStoragePoolObjLock(driver->pools.objs[i]);
- if (virStoragePoolObjIsActive(driver->pools.objs[i])) {
- virStorageVolDefPtr voldef =
- virStorageVolDefFindByKey(driver->pools.objs[i], key);
+ virStoragePoolObjPtr obj = driver->pools.objs[i];
+ virStoragePoolDefPtr def;
+
+ virStoragePoolObjLock(obj);
+ def = virStoragePoolObjGetDef(obj);
+ if (virStoragePoolObjIsActive(obj)) {
+ virStorageVolDefPtr voldef = virStorageVolDefFindByKey(obj, key);
if (voldef) {
- virStoragePoolDefPtr def = driver->pools.objs[i]->def;
if (virStorageVolLookupByKeyEnsureACL(conn, def, voldef) < 0) {
- virStoragePoolObjUnlock(driver->pools.objs[i]);
+ virStoragePoolObjUnlock(obj);
goto cleanup;
}
- vol = virGetStorageVol(conn,
- def->name,
- voldef->name,
- voldef->key,
+ vol = virGetStorageVol(conn, def->name,
+ voldef->name, voldef->key,
NULL, NULL);
}
}
- virStoragePoolObjUnlock(driver->pools.objs[i]);
+ virStoragePoolObjUnlock(obj);
}
if (!vol)
@@ -1520,17 +1552,19 @@ storageVolLookupByPath(virConnectPtr conn,
storageDriverLock();
for (i = 0; i < driver->pools.count && !vol; i++) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
+ virStoragePoolDefPtr def;
virStorageVolDefPtr voldef;
char *stable_path = NULL;
virStoragePoolObjLock(obj);
+ def = virStoragePoolObjGetDef(obj);
if (!virStoragePoolObjIsActive(obj)) {
virStoragePoolObjUnlock(obj);
continue;
}
- switch ((virStoragePoolType) obj->def->type) {
+ switch ((virStoragePoolType) def->type) {
case VIR_STORAGE_POOL_DIR:
case VIR_STORAGE_POOL_FS:
case VIR_STORAGE_POOL_NETFS:
@@ -1548,7 +1582,7 @@ storageVolLookupByPath(virConnectPtr conn,
* getting the stable path for some of the pools.
*/
VIR_WARN("Failed to get stable path for pool
'%s'",
- obj->def->name);
+ def->name);
virStoragePoolObjUnlock(obj);
continue;
}
@@ -1570,12 +1604,12 @@ storageVolLookupByPath(virConnectPtr conn,
VIR_FREE(stable_path);
if (voldef) {
- if (virStorageVolLookupByPathEnsureACL(conn, obj->def, voldef) < 0) {
+ if (virStorageVolLookupByPathEnsureACL(conn, def, voldef) < 0) {
virStoragePoolObjUnlock(obj);
goto cleanup;
}
- vol = virGetStorageVol(conn, obj->def->name,
+ vol = virGetStorageVol(conn, def->name,
voldef->name, voldef->key,
NULL, NULL);
}
@@ -1615,18 +1649,18 @@ storagePoolLookupByTargetPath(virConnectPtr conn,
storageDriverLock();
for (i = 0; i < driver->pools.count && !pool; i++) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
+ virStoragePoolDefPtr def;
virStoragePoolObjLock(obj);
+ def = virStoragePoolObjGetDef(obj);
if (!virStoragePoolObjIsActive(obj)) {
virStoragePoolObjUnlock(obj);
continue;
}
- if (STREQ(path, obj->def->target.path)) {
- pool = virGetStoragePool(conn, obj->def->name, obj->def->uuid,
- NULL, NULL);
- }
+ if (STREQ(path, def->target.path))
+ pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
virStoragePoolObjUnlock(obj);
}
@@ -1651,6 +1685,7 @@ storageVolDeleteInternal(virStorageVolPtr vol,
unsigned int flags,
bool updateMeta)
{
+ virStoragePoolDefPtr def = virStoragePoolObjGetDef(obj);
int ret = -1;
if (!backend->deleteVol) {
@@ -1668,9 +1703,9 @@ storageVolDeleteInternal(virStorageVolPtr vol,
* Ignore the disk backend since it updates the pool values.
*/
if (updateMeta) {
- if (obj->def->type != VIR_STORAGE_POOL_DISK) {
- obj->def->allocation -= voldef->target.allocation;
- obj->def->available += voldef->target.allocation;
+ if (def->type != VIR_STORAGE_POOL_DISK) {
+ def->allocation -= voldef->target.allocation;
+ def->available += voldef->target.allocation;
}
}
@@ -1688,14 +1723,16 @@ virStorageVolDefFromVol(virStorageVolPtr vol,
virStorageBackendPtr *backend)
{
virStorageVolDefPtr voldef = NULL;
+ virStoragePoolDefPtr def;
if (!(*obj = storagePoolObjFindByName(vol->pool)))
return NULL;
+ def = virStoragePoolObjGetDef(*obj);
if (!virStoragePoolObjIsActive(*obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is not active"),
- (*obj)->def->name);
+ def->name);
goto error;
}
@@ -1707,7 +1744,7 @@ virStorageVolDefFromVol(virStorageVolPtr vol,
}
if (backend) {
- if (!(*backend = virStorageBackendForType((*obj)->def->type)))
+ if (!(*backend = virStorageBackendForType(def->type)))
goto error;
}
@@ -1733,7 +1770,8 @@ storageVolDelete(virStorageVolPtr vol,
if (!(voldef = virStorageVolDefFromVol(vol, &obj, &backend)))
return -1;
- if (virStorageVolDeleteEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolDeleteEnsureACL(vol->conn, virStoragePoolObjGetDef(obj),
+ voldef) < 0)
goto cleanup;
if (voldef->in_use) {
@@ -1767,6 +1805,7 @@ storageVolCreateXML(virStoragePoolPtr pool,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
virStorageVolDefPtr voldef = NULL;
virStorageVolPtr vol = NULL, newvol = NULL;
@@ -1775,17 +1814,18 @@ storageVolCreateXML(virStoragePoolPtr pool,
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
return NULL;
+ def = virStoragePoolObjGetDef(obj);
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL)
+ if ((backend = virStorageBackendForType(def->type)) == NULL)
goto cleanup;
- voldef = virStorageVolDefParseString(obj->def, xmldesc,
+ voldef = virStorageVolDefParseString(def, xmldesc,
VIR_VOL_XML_PARSE_OPT_CAPACITY);
if (voldef == NULL)
goto cleanup;
@@ -1797,7 +1837,7 @@ storageVolCreateXML(virStoragePoolPtr pool,
goto cleanup;
}
- if (virStorageVolCreateXMLEnsureACL(pool->conn, obj->def, voldef) < 0)
+ if (virStorageVolCreateXMLEnsureACL(pool->conn, def, voldef) < 0)
goto cleanup;
if (virStorageVolDefFindByName(obj, voldef->name)) {
@@ -1819,7 +1859,7 @@ storageVolCreateXML(virStoragePoolPtr pool,
if (backend->createVol(pool->conn, obj, voldef) < 0)
goto cleanup;
- if (!(newvol = virGetStorageVol(pool->conn, obj->def->name,
voldef->name,
+ if (!(newvol = virGetStorageVol(pool->conn, def->name, voldef->name,
voldef->key, NULL, NULL)))
goto cleanup;
@@ -1878,13 +1918,13 @@ storageVolCreateXML(virStoragePoolPtr pool,
/* Update pool metadata ignoring the disk backend since
* it updates the pool values.
*/
- if (obj->def->type != VIR_STORAGE_POOL_DISK) {
- obj->def->allocation += voldef->target.allocation;
- obj->def->available -= voldef->target.allocation;
+ if (def->type != VIR_STORAGE_POOL_DISK) {
+ def->allocation += voldef->target.allocation;
+ def->available -= voldef->target.allocation;
}
VIR_INFO("Creating volume '%s' in storage pool '%s'",
- newvol->name, obj->def->name);
+ newvol->name, def->name);
vol = newvol;
newvol = NULL;
voldef = NULL;
@@ -1904,6 +1944,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStoragePoolObjPtr objsrc = NULL;
virStorageBackendPtr backend;
virStorageVolDefPtr voldefsrc = NULL;
@@ -1933,6 +1974,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
uuidstr, pool->name);
goto cleanup;
}
+ def = virStoragePoolObjGetDef(obj);
if (STRNEQ(pool->name, volsrc->pool) && !objsrc) {
virReportError(VIR_ERR_NO_STORAGE_POOL,
@@ -1943,18 +1985,19 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID,
- _("storage pool '%s' is not active"),
obj->def->name);
+ _("storage pool '%s' is not active"),
def->name);
goto cleanup;
}
if (objsrc && !virStoragePoolObjIsActive(objsrc)) {
+ virStoragePoolDefPtr objsrcdef = virStoragePoolObjGetDef(objsrc);
virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is not active"),
- objsrc->def->name);
+ objsrcdef->name);
goto cleanup;
}
- if ((backend = virStorageBackendForType(obj->def->type)) == NULL)
+ if ((backend = virStorageBackendForType(def->type)) == NULL)
goto cleanup;
voldefsrc = virStorageVolDefFindByName(objsrc ?
@@ -1966,12 +2009,12 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
goto cleanup;
}
- voldef = virStorageVolDefParseString(obj->def, xmldesc,
+ voldef = virStorageVolDefParseString(def, xmldesc,
VIR_VOL_XML_PARSE_NO_CAPACITY);
if (voldef == NULL)
goto cleanup;
- if (virStorageVolCreateXMLFromEnsureACL(pool->conn, obj->def, voldef) < 0)
+ if (virStorageVolCreateXMLFromEnsureACL(pool->conn, def, voldef) < 0)
goto cleanup;
if (virStorageVolDefFindByName(obj, voldef->name)) {
@@ -2027,7 +2070,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
memcpy(shadowvol, voldef, sizeof(*voldef));
- if (!(newvol = virGetStorageVol(pool->conn, obj->def->name,
voldef->name,
+ if (!(newvol = virGetStorageVol(pool->conn, def->name, voldef->name,
voldef->key, NULL, NULL)))
goto cleanup;
@@ -2075,13 +2118,13 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
/* Updating pool metadata ignoring the disk backend since
* it updates the pool values
*/
- if (obj->def->type != VIR_STORAGE_POOL_DISK) {
- obj->def->allocation += voldef->target.allocation;
- obj->def->available -= voldef->target.allocation;
+ if (def->type != VIR_STORAGE_POOL_DISK) {
+ def->allocation += voldef->target.allocation;
+ def->available -= voldef->target.allocation;
}
VIR_INFO("Creating volume '%s' in storage pool '%s'",
- newvol->name, obj->def->name);
+ newvol->name, def->name);
vol = newvol;
newvol = NULL;
voldef = NULL;
@@ -2115,7 +2158,8 @@ storageVolDownload(virStorageVolPtr vol,
if (!(voldef = virStorageVolDefFromVol(vol, &obj, &backend)))
return -1;
- if (virStorageVolDownloadEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolDownloadEnsureACL(vol->conn, virStoragePoolObjGetDef(obj),
+ voldef) < 0)
goto cleanup;
if (voldef->building) {
@@ -2209,6 +2253,7 @@ virStorageVolPoolRefreshThread(void *opaque)
virStorageVolStreamInfoPtr cbdata = opaque;
virStoragePoolObjPtr obj = NULL;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
virObjectEventPtr event = NULL;
@@ -2220,16 +2265,16 @@ virStorageVolPoolRefreshThread(void *opaque)
if (!(obj = virStoragePoolObjFindByName(&driver->pools,
cbdata->pool_name)))
goto cleanup;
+ def = virStoragePoolObjGetDef(obj);
- if (!(backend = virStorageBackendForType(obj->def->type)))
+ if (!(backend = virStorageBackendForType(def->type)))
goto cleanup;
virStoragePoolObjClearVols(obj);
if (backend->refreshPool(NULL, obj) < 0)
VIR_DEBUG("Failed to refresh storage pool");
- event = virStoragePoolEventRefreshNew(obj->def->name,
- obj->def->uuid);
+ event = virStoragePoolEventRefreshNew(def->name, def->uuid);
cleanup:
if (event)
@@ -2274,6 +2319,7 @@ storageVolUpload(virStorageVolPtr vol,
{
virStorageBackendPtr backend;
virStoragePoolObjPtr obj = NULL;
+ virStoragePoolDefPtr def;
virStorageVolDefPtr voldef = NULL;
virStorageVolStreamInfoPtr cbdata = NULL;
int ret = -1;
@@ -2282,8 +2328,9 @@ storageVolUpload(virStorageVolPtr vol,
if (!(voldef = virStorageVolDefFromVol(vol, &obj, &backend)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStorageVolUploadEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolUploadEnsureACL(vol->conn, def, voldef) < 0)
goto cleanup;
if (voldef->in_use) {
@@ -2313,7 +2360,7 @@ storageVolUpload(virStorageVolPtr vol,
* routine in order to call the refresh API.
*/
if (VIR_ALLOC(cbdata) < 0 ||
- VIR_STRDUP(cbdata->pool_name, obj->def->name) < 0)
+ VIR_STRDUP(cbdata->pool_name, def->name) < 0)
goto cleanup;
if (voldef->type == VIR_STORAGE_VOL_PLOOP &&
VIR_STRDUP(cbdata->vol_path, voldef->target.path) < 0)
@@ -2346,6 +2393,7 @@ storageVolResize(virStorageVolPtr vol,
{
virStorageBackendPtr backend;
virStoragePoolObjPtr obj = NULL;
+ virStoragePoolDefPtr def;
virStorageVolDefPtr voldef = NULL;
unsigned long long abs_capacity, delta = 0;
int ret = -1;
@@ -2356,8 +2404,9 @@ storageVolResize(virStorageVolPtr vol,
if (!(voldef = virStorageVolDefFromVol(vol, &obj, &backend)))
return -1;
+ def = virStoragePoolObjGetDef(obj);
- if (virStorageVolResizeEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolResizeEnsureACL(vol->conn, def, voldef) < 0)
goto cleanup;
if (voldef->in_use) {
@@ -2402,7 +2451,7 @@ storageVolResize(virStorageVolPtr vol,
if (flags & VIR_STORAGE_VOL_RESIZE_ALLOCATE)
delta = abs_capacity - voldef->target.allocation;
- if (delta > obj->def->available) {
+ if (delta > def->available) {
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("Not enough space left in storage pool"));
goto cleanup;
@@ -2425,8 +2474,8 @@ storageVolResize(virStorageVolPtr vol,
*/
if (flags & VIR_STORAGE_VOL_RESIZE_ALLOCATE) {
voldef->target.allocation = abs_capacity;
- obj->def->allocation += delta;
- obj->def->available -= delta;
+ def->allocation += delta;
+ def->available -= delta;
}
ret = 0;
@@ -2460,7 +2509,9 @@ storageVolWipePattern(virStorageVolPtr vol,
if (!(voldef = virStorageVolDefFromVol(vol, &obj, &backend)))
return -1;
- if (virStorageVolWipePatternEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolWipePatternEnsureACL(vol->conn,
+ virStoragePoolObjGetDef(obj),
+ voldef) < 0)
goto cleanup;
if (voldef->in_use) {
@@ -2524,7 +2575,9 @@ storageVolGetInfoFlags(virStorageVolPtr vol,
if (!(voldef = virStorageVolDefFromVol(vol, &obj, &backend)))
return -1;
- if (virStorageVolGetInfoFlagsEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolGetInfoFlagsEnsureACL(vol->conn,
+ virStoragePoolObjGetDef(obj),
+ voldef) < 0)
goto cleanup;
if (backend->refreshVol &&
@@ -2559,6 +2612,7 @@ storageVolGetXMLDesc(virStorageVolPtr vol,
unsigned int flags)
{
virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def;
virStorageBackendPtr backend;
virStorageVolDefPtr voldef;
char *ret = NULL;
@@ -2567,15 +2621,16 @@ storageVolGetXMLDesc(virStorageVolPtr vol,
if (!(voldef = virStorageVolDefFromVol(vol, &obj, &backend)))
return NULL;
+ def = virStoragePoolObjGetDef(obj);
- if (virStorageVolGetXMLDescEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolGetXMLDescEnsureACL(vol->conn, def, voldef) < 0)
goto cleanup;
if (backend->refreshVol &&
backend->refreshVol(vol->conn, obj, voldef) < 0)
goto cleanup;
- ret = virStorageVolDefFormat(obj->def, voldef);
+ ret = virStorageVolDefFormat(def, voldef);
cleanup:
virStoragePoolObjUnlock(obj);
@@ -2593,7 +2648,8 @@ storageVolGetPath(virStorageVolPtr vol)
if (!(voldef = virStorageVolDefFromVol(vol, &obj, NULL)))
return NULL;
- if (virStorageVolGetPathEnsureACL(vol->conn, obj->def, voldef) < 0)
+ if (virStorageVolGetPathEnsureACL(vol->conn, virStoragePoolObjGetDef(obj),
+ voldef) < 0)
goto cleanup;
ignore_value(VIR_STRDUP(ret, voldef->target.path));
@@ -3043,9 +3099,10 @@ virStoragePoolObjBuildTempFilePath(virStoragePoolObjPtr obj,
virStorageVolDefPtr voldef)
{
+ virStoragePoolDefPtr def = virStoragePoolObjGetDef(obj);
char *tmp = NULL;
ignore_value(virAsprintf(&tmp, "%s/%s.%s.secret.XXXXXX",
- driver->stateDir, obj->def->name,
voldef->name));
+ driver->stateDir, def->name, voldef->name));
return tmp;
}
--
2.13.6