storage: Introduce virStoragePoolObjEndAPI

For now it'll just call the virStoragePoolObjUnlock, but a future
adjustment will do something different. Since the new API will check
for a NULL object before the Unlock call, callers no longer need to
check for NULL before calling.

The virStoragePoolObjUnlock is now private/static to virstorageobj.c
with a short term forward reference.
This commit is contained in:
John Ferlan 2017-10-08 09:09:09 -04:00
parent 9bfcf3ccdd
commit 770aa08e48
7 changed files with 106 additions and 108 deletions

View File

@ -36,6 +36,9 @@
VIR_LOG_INIT("conf.virstorageobj"); VIR_LOG_INIT("conf.virstorageobj");
static void
virStoragePoolObjUnlock(virStoragePoolObjPtr obj);
struct _virStorageVolDefList { struct _virStorageVolDefList {
size_t count; size_t count;
@ -77,6 +80,16 @@ virStoragePoolObjNew(void)
} }
void
virStoragePoolObjEndAPI(virStoragePoolObjPtr *obj)
{
if (!*obj)
return;
virStoragePoolObjUnlock(*obj);
}
virStoragePoolDefPtr virStoragePoolDefPtr
virStoragePoolObjGetDef(virStoragePoolObjPtr obj) virStoragePoolObjGetDef(virStoragePoolObjPtr obj)
{ {
@ -1274,7 +1287,7 @@ virStoragePoolObjLock(virStoragePoolObjPtr obj)
} }
void static void
virStoragePoolObjUnlock(virStoragePoolObjPtr obj) virStoragePoolObjUnlock(virStoragePoolObjPtr obj)
{ {
virMutexUnlock(&obj->lock); virMutexUnlock(&obj->lock);

View File

@ -58,6 +58,9 @@ typedef bool
virStoragePoolObjPtr virStoragePoolObjPtr
virStoragePoolObjNew(void); virStoragePoolObjNew(void);
void
virStoragePoolObjEndAPI(virStoragePoolObjPtr *obj);
virStoragePoolDefPtr virStoragePoolDefPtr
virStoragePoolObjGetDef(virStoragePoolObjPtr obj); virStoragePoolObjGetDef(virStoragePoolObjPtr obj);
@ -240,9 +243,6 @@ virStoragePoolObjSourceFindDuplicate(virConnectPtr conn,
void void
virStoragePoolObjLock(virStoragePoolObjPtr obj); virStoragePoolObjLock(virStoragePoolObjPtr obj);
void
virStoragePoolObjUnlock(virStoragePoolObjPtr obj);
int int
virStoragePoolObjListExport(virConnectPtr conn, virStoragePoolObjListExport(virConnectPtr conn,
virStoragePoolObjListPtr poolobjs, virStoragePoolObjListPtr poolobjs,

View File

@ -1074,6 +1074,7 @@ virStoragePoolObjClearVols;
virStoragePoolObjDecrAsyncjobs; virStoragePoolObjDecrAsyncjobs;
virStoragePoolObjDefUseNewDef; virStoragePoolObjDefUseNewDef;
virStoragePoolObjDeleteDef; virStoragePoolObjDeleteDef;
virStoragePoolObjEndAPI;
virStoragePoolObjFindByName; virStoragePoolObjFindByName;
virStoragePoolObjFindByUUID; virStoragePoolObjFindByUUID;
virStoragePoolObjForEachVolume; virStoragePoolObjForEachVolume;
@ -1105,7 +1106,6 @@ virStoragePoolObjSetAutostart;
virStoragePoolObjSetConfigFile; virStoragePoolObjSetConfigFile;
virStoragePoolObjSetDef; virStoragePoolObjSetDef;
virStoragePoolObjSourceFindDuplicate; virStoragePoolObjSourceFindDuplicate;
virStoragePoolObjUnlock;
virStoragePoolObjVolumeGetNames; virStoragePoolObjVolumeGetNames;
virStoragePoolObjVolumeListExport; virStoragePoolObjVolumeListExport;

View File

@ -166,7 +166,7 @@ virStoragePoolFCRefreshThread(void *opaque)
virStoragePoolObjClearVols(pool); virStoragePoolObjClearVols(pool);
found = virStorageBackendSCSIFindLUs(pool, host); found = virStorageBackendSCSIFindLUs(pool, host);
} }
virStoragePoolObjUnlock(pool); virStoragePoolObjEndAPI(&pool);
} while (!found && --tries); } while (!found && --tries);
if (pool && !found) if (pool && !found)

View File

@ -167,7 +167,7 @@ storagePoolUpdateAllState(void)
virStoragePoolObjLock(obj); virStoragePoolObjLock(obj);
storagePoolUpdateState(obj); storagePoolUpdateState(obj);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
} }
@ -192,7 +192,7 @@ storageDriverAutostart(void)
virStoragePoolObjLock(obj); virStoragePoolObjLock(obj);
if ((backend = virStorageBackendForType(def->type)) == NULL) { if ((backend = virStorageBackendForType(def->type)) == NULL) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
continue; continue;
} }
@ -203,7 +203,7 @@ storageDriverAutostart(void)
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to autostart storage pool '%s': %s"), _("Failed to autostart storage pool '%s': %s"),
def->name, virGetLastErrorMessage()); def->name, virGetLastErrorMessage());
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
continue; continue;
} }
started = true; started = true;
@ -229,7 +229,7 @@ storageDriverAutostart(void)
} }
VIR_FREE(stateFile); VIR_FREE(stateFile);
} }
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
virObjectUnref(conn); virObjectUnref(conn);
@ -458,7 +458,7 @@ storagePoolLookupByUUID(virConnectPtr conn,
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return pool; return pool;
} }
@ -480,7 +480,7 @@ storagePoolLookupByName(virConnectPtr conn,
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return pool; return pool;
} }
@ -501,7 +501,7 @@ storagePoolLookupByVolume(virStorageVolPtr vol)
pool = virGetStoragePool(vol->conn, def->name, def->uuid, NULL, NULL); pool = virGetStoragePool(vol->conn, def->name, def->uuid, NULL, NULL);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return pool; return pool;
} }
@ -632,7 +632,7 @@ storagePoolIsActive(virStoragePoolPtr pool)
ret = virStoragePoolObjIsActive(obj); ret = virStoragePoolObjIsActive(obj);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -654,7 +654,7 @@ storagePoolIsPersistent(virStoragePoolPtr pool)
ret = virStoragePoolObjGetConfigFile(obj) ? 1 : 0; ret = virStoragePoolObjGetConfigFile(obj) ? 1 : 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -753,8 +753,7 @@ storagePoolCreateXML(virConnectPtr conn,
virStoragePoolDefFree(newDef); virStoragePoolDefFree(newDef);
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
storageDriverUnlock(); storageDriverUnlock();
return pool; return pool;
} }
@ -813,8 +812,7 @@ storagePoolDefineXML(virConnectPtr conn,
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
virStoragePoolDefFree(newDef); virStoragePoolDefFree(newDef);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
storageDriverUnlock(); storageDriverUnlock();
return pool; return pool;
} }
@ -874,8 +872,7 @@ storagePoolUndefine(virStoragePoolPtr pool)
cleanup: cleanup:
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
storageDriverUnlock(); storageDriverUnlock();
return ret; return ret;
} }
@ -958,8 +955,7 @@ storagePoolCreate(virStoragePoolPtr pool,
VIR_FREE(stateFile); VIR_FREE(stateFile);
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
return ret; return ret;
} }
@ -1004,7 +1000,7 @@ storagePoolBuild(virStoragePoolPtr pool,
cleanup: cleanup:
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1071,8 +1067,7 @@ storagePoolDestroy(virStoragePoolPtr pool)
cleanup: cleanup:
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
storageDriverUnlock(); storageDriverUnlock();
return ret; return ret;
} }
@ -1138,7 +1133,7 @@ storagePoolDelete(virStoragePoolPtr pool,
cleanup: cleanup:
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1202,8 +1197,7 @@ storagePoolRefresh(virStoragePoolPtr pool,
cleanup: cleanup:
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
storageDriverUnlock(); storageDriverUnlock();
return ret; return ret;
} }
@ -1238,7 +1232,7 @@ storagePoolGetInfo(virStoragePoolPtr pool,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1270,7 +1264,7 @@ storagePoolGetXMLDesc(virStoragePoolPtr pool,
ret = virStoragePoolDefFormat(curDef); ret = virStoragePoolDefFormat(curDef);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1293,7 +1287,7 @@ storagePoolGetAutostart(virStoragePoolPtr pool,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1356,8 +1350,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool,
ret = 0; ret = 0;
cleanup: cleanup:
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
storageDriverUnlock(); storageDriverUnlock();
return ret; return ret;
} }
@ -1387,7 +1380,7 @@ storagePoolNumOfVolumes(virStoragePoolPtr pool)
virStoragePoolNumOfVolumesCheckACL); virStoragePoolNumOfVolumesCheckACL);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1418,7 +1411,7 @@ storagePoolListVolumes(virStoragePoolPtr pool,
virStoragePoolListVolumesCheckACL, virStoragePoolListVolumesCheckACL,
names, maxnames); names, maxnames);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return n; return n;
} }
@ -1452,7 +1445,7 @@ storagePoolListAllVolumes(virStoragePoolPtr pool,
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1492,7 +1485,7 @@ storageVolLookupByName(virStoragePoolPtr pool,
voldef->key, NULL, NULL); voldef->key, NULL, NULL);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return vol; return vol;
} }
@ -1516,7 +1509,7 @@ storageVolLookupByKey(virConnectPtr conn,
if (voldef) { if (voldef) {
if (virStorageVolLookupByKeyEnsureACL(conn, def, voldef) < 0) { if (virStorageVolLookupByKeyEnsureACL(conn, def, voldef) < 0) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
goto cleanup; goto cleanup;
} }
@ -1525,7 +1518,7 @@ storageVolLookupByKey(virConnectPtr conn,
NULL, NULL); NULL, NULL);
} }
} }
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
if (!vol) if (!vol)
@ -1560,7 +1553,7 @@ storageVolLookupByPath(virConnectPtr conn,
def = virStoragePoolObjGetDef(obj); def = virStoragePoolObjGetDef(obj);
if (!virStoragePoolObjIsActive(obj)) { if (!virStoragePoolObjIsActive(obj)) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
continue; continue;
} }
@ -1583,7 +1576,7 @@ storageVolLookupByPath(virConnectPtr conn,
*/ */
VIR_WARN("Failed to get stable path for pool '%s'", VIR_WARN("Failed to get stable path for pool '%s'",
def->name); def->name);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
continue; continue;
} }
break; break;
@ -1594,7 +1587,7 @@ storageVolLookupByPath(virConnectPtr conn,
case VIR_STORAGE_POOL_ZFS: case VIR_STORAGE_POOL_ZFS:
case VIR_STORAGE_POOL_LAST: case VIR_STORAGE_POOL_LAST:
if (VIR_STRDUP(stable_path, path) < 0) { if (VIR_STRDUP(stable_path, path) < 0) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
goto cleanup; goto cleanup;
} }
break; break;
@ -1605,7 +1598,7 @@ storageVolLookupByPath(virConnectPtr conn,
if (voldef) { if (voldef) {
if (virStorageVolLookupByPathEnsureACL(conn, def, voldef) < 0) { if (virStorageVolLookupByPathEnsureACL(conn, def, voldef) < 0) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
goto cleanup; goto cleanup;
} }
@ -1614,7 +1607,7 @@ storageVolLookupByPath(virConnectPtr conn,
NULL, NULL); NULL, NULL);
} }
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
if (!vol) { if (!vol) {
@ -1655,14 +1648,14 @@ storagePoolLookupByTargetPath(virConnectPtr conn,
def = virStoragePoolObjGetDef(obj); def = virStoragePoolObjGetDef(obj);
if (!virStoragePoolObjIsActive(obj)) { if (!virStoragePoolObjIsActive(obj)) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
continue; continue;
} }
if (STREQ(path, def->target.path)) if (STREQ(path, def->target.path))
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
storageDriverUnlock(); storageDriverUnlock();
@ -1751,7 +1744,7 @@ virStorageVolDefFromVol(virStorageVolPtr vol,
return voldef; return voldef;
error: error:
virStoragePoolObjUnlock(*obj); virStoragePoolObjEndAPI(obj);
*obj = NULL; *obj = NULL;
return NULL; return NULL;
@ -1794,7 +1787,7 @@ storageVolDelete(virStorageVolPtr vol,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -1885,7 +1878,7 @@ storageVolCreateXML(virStoragePoolPtr pool,
/* Drop the pool lock during volume allocation */ /* Drop the pool lock during volume allocation */
virStoragePoolObjIncrAsyncjobs(obj); virStoragePoolObjIncrAsyncjobs(obj);
voldef->building = true; voldef->building = true;
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
buildret = backend->buildVol(pool->conn, obj, buildvoldef, flags); buildret = backend->buildVol(pool->conn, obj, buildvoldef, flags);
@ -1932,8 +1925,7 @@ storageVolCreateXML(virStoragePoolPtr pool,
cleanup: cleanup:
virObjectUnref(newvol); virObjectUnref(newvol);
virStorageVolDefFree(voldef); virStorageVolDefFree(voldef);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
return vol; return vol;
} }
@ -1961,7 +1953,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
storageDriverLock(); storageDriverLock();
obj = virStoragePoolObjFindByUUID(&driver->pools, pool->uuid); obj = virStoragePoolObjFindByUUID(&driver->pools, pool->uuid);
if (obj && STRNEQ(pool->name, volsrc->pool)) { if (obj && STRNEQ(pool->name, volsrc->pool)) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
objsrc = virStoragePoolObjFindByName(&driver->pools, volsrc->pool); objsrc = virStoragePoolObjFindByName(&driver->pools, volsrc->pool);
virStoragePoolObjLock(obj); virStoragePoolObjLock(obj);
} }
@ -2082,11 +2074,11 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
virStoragePoolObjIncrAsyncjobs(obj); virStoragePoolObjIncrAsyncjobs(obj);
voldef->building = true; voldef->building = true;
voldefsrc->in_use++; voldefsrc->in_use++;
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
if (objsrc) { if (objsrc) {
virStoragePoolObjIncrAsyncjobs(objsrc); virStoragePoolObjIncrAsyncjobs(objsrc);
virStoragePoolObjUnlock(objsrc); virStoragePoolObjEndAPI(&objsrc);
} }
buildret = backend->buildVolFrom(pool->conn, obj, shadowvol, voldefsrc, flags); buildret = backend->buildVolFrom(pool->conn, obj, shadowvol, voldefsrc, flags);
@ -2103,7 +2095,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
if (objsrc) { if (objsrc) {
virStoragePoolObjDecrAsyncjobs(objsrc); virStoragePoolObjDecrAsyncjobs(objsrc);
virStoragePoolObjUnlock(objsrc); virStoragePoolObjEndAPI(&objsrc);
objsrc = NULL; objsrc = NULL;
} }
@ -2133,10 +2125,8 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
virObjectUnref(newvol); virObjectUnref(newvol);
virStorageVolDefFree(voldef); virStorageVolDefFree(voldef);
VIR_FREE(shadowvol); VIR_FREE(shadowvol);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&objsrc);
if (objsrc)
virStoragePoolObjUnlock(objsrc);
return vol; return vol;
} }
@ -2179,7 +2169,7 @@ storageVolDownload(virStorageVolPtr vol,
offset, length, flags); offset, length, flags);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -2286,8 +2276,7 @@ virStorageVolPoolRefreshThread(void *opaque)
cleanup: cleanup:
if (event) if (event)
virObjectEventStateQueue(driver->storageEventState, event); virObjectEventStateQueue(driver->storageEventState, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
storageDriverUnlock(); storageDriverUnlock();
virStorageVolPoolRefreshDataFree(cbdata); virStorageVolPoolRefreshDataFree(cbdata);
} }
@ -2386,7 +2375,7 @@ storageVolUpload(virStorageVolPtr vol,
cbdata = NULL; cbdata = NULL;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
if (cbdata) if (cbdata)
virStorageVolPoolRefreshDataFree(cbdata); virStorageVolPoolRefreshDataFree(cbdata);
@ -2488,7 +2477,7 @@ storageVolResize(virStorageVolPtr vol,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -2554,7 +2543,7 @@ storageVolWipePattern(virStorageVolPtr vol,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -2601,7 +2590,7 @@ storageVolGetInfoFlags(virStorageVolPtr vol,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -2640,7 +2629,7 @@ storageVolGetXMLDesc(virStorageVolPtr vol,
ret = virStorageVolDefFormat(def, voldef); ret = virStorageVolDefFormat(def, voldef);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -2662,7 +2651,7 @@ storageVolGetPath(virStorageVolPtr vol)
ignore_value(VIR_STRDUP(ret, voldef->target.path)); ignore_value(VIR_STRDUP(ret, voldef->target.path));
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }

View File

@ -1119,18 +1119,18 @@ testParseStorage(testDriverPtr privconn,
} }
if (testStoragePoolObjSetDefaults(obj) == -1) { if (testStoragePoolObjSetDefaults(obj) == -1) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
goto error; goto error;
} }
virStoragePoolObjSetActive(obj, true); virStoragePoolObjSetActive(obj, true);
/* Find storage volumes */ /* Find storage volumes */
if (testOpenVolumesForPool(file, ctxt, obj, i+1) < 0) { if (testOpenVolumesForPool(file, ctxt, obj, i+1) < 0) {
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
goto error; goto error;
} }
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
ret = 0; ret = 0;
@ -4100,7 +4100,7 @@ testStoragePoolObjFindActiveByName(testDriverPtr privconn,
if (!virStoragePoolObjIsActive(obj)) { if (!virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is not active"), name); _("storage pool '%s' is not active"), name);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return NULL; return NULL;
} }
@ -4120,7 +4120,7 @@ testStoragePoolObjFindInactiveByName(testDriverPtr privconn,
if (virStoragePoolObjIsActive(obj)) { if (virStoragePoolObjIsActive(obj)) {
virReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("storage pool '%s' is active"), name); _("storage pool '%s' is active"), name);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return NULL; return NULL;
} }
@ -4165,7 +4165,7 @@ testStoragePoolLookupByUUID(virConnectPtr conn,
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return pool; return pool;
} }
@ -4185,7 +4185,7 @@ testStoragePoolLookupByName(virConnectPtr conn,
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return pool; return pool;
} }
@ -4294,7 +4294,7 @@ testStoragePoolIsActive(virStoragePoolPtr pool)
cleanup: cleanup:
if (obj) if (obj)
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -4311,7 +4311,7 @@ testStoragePoolIsPersistent(virStoragePoolPtr pool)
ret = virStoragePoolObjGetConfigFile(obj) ? 1 : 0; ret = virStoragePoolObjGetConfigFile(obj) ? 1 : 0;
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -4336,7 +4336,7 @@ testStoragePoolCreate(virStoragePoolPtr pool,
0); 0);
testObjectEventQueue(privconn, event); testObjectEventQueue(privconn, event);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return 0; return 0;
} }
@ -4490,8 +4490,7 @@ testStoragePoolCreateXML(virConnectPtr conn,
cleanup: cleanup:
virStoragePoolDefFree(newDef); virStoragePoolDefFree(newDef);
testObjectEventQueue(privconn, event); testObjectEventQueue(privconn, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
testDriverUnlock(privconn); testDriverUnlock(privconn);
return pool; return pool;
} }
@ -4539,8 +4538,7 @@ testStoragePoolDefineXML(virConnectPtr conn,
cleanup: cleanup:
virStoragePoolDefFree(newDef); virStoragePoolDefFree(newDef);
testObjectEventQueue(privconn, event); testObjectEventQueue(privconn, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
testDriverUnlock(privconn); testDriverUnlock(privconn);
return pool; return pool;
} }
@ -4584,7 +4582,7 @@ testStoragePoolBuild(virStoragePoolPtr pool,
VIR_STORAGE_POOL_EVENT_CREATED, VIR_STORAGE_POOL_EVENT_CREATED,
0); 0);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
testObjectEventQueue(privconn, event); testObjectEventQueue(privconn, event);
return 0; return 0;
@ -4660,8 +4658,7 @@ testStoragePoolDestroy(virStoragePoolPtr pool)
cleanup: cleanup:
testObjectEventQueue(privconn, event); testObjectEventQueue(privconn, event);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
return ret; return ret;
} }
@ -4685,7 +4682,7 @@ testStoragePoolDelete(virStoragePoolPtr pool,
testObjectEventQueue(privconn, event); testObjectEventQueue(privconn, event);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return 0; return 0;
} }
@ -4706,7 +4703,7 @@ testStoragePoolRefresh(virStoragePoolPtr pool,
event = virStoragePoolEventRefreshNew(pool->name, pool->uuid); event = virStoragePoolEventRefreshNew(pool->name, pool->uuid);
testObjectEventQueue(privconn, event); testObjectEventQueue(privconn, event);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return 0; return 0;
} }
@ -4732,7 +4729,7 @@ testStoragePoolGetInfo(virStoragePoolPtr pool,
info->allocation = def->allocation; info->allocation = def->allocation;
info->available = def->available; info->available = def->available;
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return 0; return 0;
} }
@ -4752,7 +4749,7 @@ testStoragePoolGetXMLDesc(virStoragePoolPtr pool,
ret = virStoragePoolDefFormat(virStoragePoolObjGetDef(obj)); ret = virStoragePoolDefFormat(virStoragePoolObjGetDef(obj));
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -4772,7 +4769,7 @@ testStoragePoolGetAutostart(virStoragePoolPtr pool,
else else
*autostart = virStoragePoolObjIsAutostart(obj) ? 1 : 0; *autostart = virStoragePoolObjIsAutostart(obj) ? 1 : 0;
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return 0; return 0;
} }
@ -4799,7 +4796,7 @@ testStoragePoolSetAutostart(virStoragePoolPtr pool,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -4816,7 +4813,7 @@ testStoragePoolNumOfVolumes(virStoragePoolPtr pool)
ret = virStoragePoolObjNumOfVolumes(obj, pool->conn, NULL); ret = virStoragePoolObjNumOfVolumes(obj, pool->conn, NULL);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -4835,7 +4832,7 @@ testStoragePoolListVolumes(virStoragePoolPtr pool,
n = virStoragePoolObjVolumeGetNames(obj, pool->conn, NULL, names, maxnames); n = virStoragePoolObjVolumeGetNames(obj, pool->conn, NULL, names, maxnames);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return n; return n;
} }
@ -4863,7 +4860,7 @@ testStoragePoolListAllVolumes(virStoragePoolPtr pool,
ret = virStoragePoolObjVolumeListExport(pool->conn, obj, vols, NULL); ret = virStoragePoolObjVolumeListExport(pool->conn, obj, vols, NULL);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -4906,7 +4903,7 @@ testStorageVolLookupByName(virStoragePoolPtr pool,
NULL, NULL); NULL, NULL);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -4933,11 +4930,11 @@ testStorageVolLookupByKey(virConnectPtr conn,
ret = virGetStorageVol(conn, def->name, ret = virGetStorageVol(conn, def->name,
privvol->name, privvol->key, privvol->name, privvol->key,
NULL, NULL); NULL, NULL);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
break; break;
} }
} }
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
testDriverUnlock(privconn); testDriverUnlock(privconn);
@ -4971,11 +4968,11 @@ testStorageVolLookupByPath(virConnectPtr conn,
ret = virGetStorageVol(conn, def->name, ret = virGetStorageVol(conn, def->name,
privvol->name, privvol->key, privvol->name, privvol->key,
NULL, NULL); NULL, NULL);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
break; break;
} }
} }
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
} }
testDriverUnlock(privconn); testDriverUnlock(privconn);
@ -5041,7 +5038,7 @@ testStorageVolCreateXML(virStoragePoolPtr pool,
cleanup: cleanup:
virStorageVolDefFree(privvol); virStorageVolDefFree(privvol);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -5109,7 +5106,7 @@ testStorageVolCreateXMLFrom(virStoragePoolPtr pool,
cleanup: cleanup:
virStorageVolDefFree(privvol); virStorageVolDefFree(privvol);
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -5141,7 +5138,7 @@ testStorageVolDelete(virStorageVolPtr vol,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -5185,7 +5182,7 @@ testStorageVolGetInfo(virStorageVolPtr vol,
ret = 0; ret = 0;
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -5210,7 +5207,7 @@ testStorageVolGetXMLDesc(virStorageVolPtr vol,
ret = virStorageVolDefFormat(virStoragePoolObjGetDef(obj), privvol); ret = virStorageVolDefFormat(virStoragePoolObjGetDef(obj), privvol);
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }
@ -5232,7 +5229,7 @@ testStorageVolGetPath(virStorageVolPtr vol)
ignore_value(VIR_STRDUP(ret, privvol->target.path)); ignore_value(VIR_STRDUP(ret, privvol->target.path));
cleanup: cleanup:
virStoragePoolObjUnlock(obj); virStoragePoolObjEndAPI(&obj);
return ret; return ret;
} }

View File

@ -110,8 +110,7 @@ testCompareXMLToArgvFiles(bool shouldFail,
virStorageVolDefFree(inputvol); virStorageVolDefFree(inputvol);
virCommandFree(cmd); virCommandFree(cmd);
VIR_FREE(actualCmdline); VIR_FREE(actualCmdline);
if (obj) virStoragePoolObjEndAPI(&obj);
virStoragePoolObjUnlock(obj);
virStoragePoolObjFree(obj); virStoragePoolObjFree(obj);
virObjectUnref(conn); virObjectUnref(conn);
return ret; return ret;