}
+int
+virStoragePoolObjNumOfStoragePools(virStoragePoolObjListPtr pools,
+ virConnectPtr conn,
+ bool wantActive,
+ virStoragePoolObjListACLFilter aclfilter)
+{
+ int npools = 0;
+ size_t i;
+
+ for (i = 0; i < pools->count; i++) {
+ virStoragePoolObjPtr obj = pools->objs[i];
+ virStoragePoolObjLock(obj);
+ if (!aclfilter || aclfilter(conn, obj->def)) {
+ if (wantActive == virStoragePoolObjIsActive(obj))
+ npools++;
+ }
+ virStoragePoolObjUnlock(obj);
+ }
+
+ return npools;
+}
+
+
/*
* virStoragePoolObjIsDuplicate:
* @doms : virStoragePoolObjListPtr to search
int
virStoragePoolObjDeleteDef(virStoragePoolObjPtr pool);
+typedef bool (*virStoragePoolObjListACLFilter)(virConnectPtr conn,
+ virStoragePoolDefPtr def);
+
+int
+virStoragePoolObjNumOfStoragePools(virStoragePoolObjListPtr pools,
+ virConnectPtr conn,
+ bool wantActive,
+ virStoragePoolObjListACLFilter aclfilter);
+
void
virStoragePoolObjFree(virStoragePoolObjPtr pool);
virStoragePoolObjLoadAllConfigs;
virStoragePoolObjLoadAllState;
virStoragePoolObjLock;
+virStoragePoolObjNumOfStoragePools;
virStoragePoolObjNumOfVolumes;
virStoragePoolObjRemove;
virStoragePoolObjSaveDef;
static int
storageConnectNumOfStoragePools(virConnectPtr conn)
{
- size_t i;
int nactive = 0;
if (virConnectNumOfStoragePoolsEnsureACL(conn) < 0)
return -1;
storageDriverLock();
- for (i = 0; i < driver->pools.count; i++) {
- virStoragePoolObjPtr obj = driver->pools.objs[i];
- virStoragePoolObjLock(obj);
- if (virConnectNumOfStoragePoolsCheckACL(conn, obj->def) &&
- virStoragePoolObjIsActive(obj))
- nactive++;
- virStoragePoolObjUnlock(obj);
- }
+ nactive = virStoragePoolObjNumOfStoragePools(&driver->pools, conn, true,
+ virConnectNumOfStoragePoolsCheckACL);
storageDriverUnlock();
return nactive;
static int
storageConnectNumOfDefinedStoragePools(virConnectPtr conn)
{
- size_t i;
int nactive = 0;
if (virConnectNumOfDefinedStoragePoolsEnsureACL(conn) < 0)
return -1;
storageDriverLock();
- for (i = 0; i < driver->pools.count; i++) {
- virStoragePoolObjPtr obj = driver->pools.objs[i];
- virStoragePoolObjLock(obj);
- if (virConnectNumOfDefinedStoragePoolsCheckACL(conn, obj->def) &&
- !virStoragePoolObjIsActive(obj))
- nactive++;
- virStoragePoolObjUnlock(obj);
- }
+ nactive = virStoragePoolObjNumOfStoragePools(&driver->pools, conn, false,
+ virConnectNumOfDefinedStoragePoolsCheckACL);
storageDriverUnlock();
return nactive;
return testStoragePoolLookupByName(vol->conn, vol->pool);
}
+
static int
testConnectNumOfStoragePools(virConnectPtr conn)
{
testDriverPtr privconn = conn->privateData;
int numActive = 0;
- size_t i;
testDriverLock(privconn);
- for (i = 0; i < privconn->pools.count; i++)
- if (virStoragePoolObjIsActive(privconn->pools.objs[i]))
- numActive++;
+ numActive = virStoragePoolObjNumOfStoragePools(&privconn->pools, conn,
+ true, NULL);
testDriverUnlock(privconn);
return numActive;
return -1;
}
+
static int
testConnectNumOfDefinedStoragePools(virConnectPtr conn)
{
testDriverPtr privconn = conn->privateData;
int numInactive = 0;
- size_t i;
testDriverLock(privconn);
- for (i = 0; i < privconn->pools.count; i++) {
- virStoragePoolObjLock(privconn->pools.objs[i]);
- if (!virStoragePoolObjIsActive(privconn->pools.objs[i]))
- numInactive++;
- virStoragePoolObjUnlock(privconn->pools.objs[i]);
- }
+ numInactive = virStoragePoolObjNumOfStoragePools(&privconn->pools, conn,
+ false, NULL);
testDriverUnlock(privconn);
return numInactive;