storage: Introduce internal pool support

To allow using the storage driver APIs to do operation on generic domain
disks we will need to introduce internal storage pools that will give is
a base to support this stuff even on files that weren't originally
defined as a part of the pool.

This patch introduces the 'internal' flag for a storage pool that will
prevent it from being listed along with the user defined storage pools.
This commit is contained in:
Peter Krempa 2013-12-13 10:37:48 +01:00
parent b3c1a25df8
commit 362da8209d
3 changed files with 12 additions and 4 deletions

View File

@ -2172,6 +2172,9 @@ static bool
virStoragePoolMatch(virStoragePoolObjPtr poolobj,
unsigned int flags)
{
if (poolobj->internal)
return false;
/* filter by active state */
if (MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_ACTIVE) &&
!((MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE) &&

View File

@ -332,6 +332,7 @@ struct _virStoragePoolObj {
int active;
int autostart;
unsigned int asyncjobs;
bool internal;
virStoragePoolDefPtr def;
virStoragePoolDefPtr newDef;

View File

@ -377,7 +377,8 @@ storageConnectNumOfStoragePools(virConnectPtr conn) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
if (virConnectNumOfStoragePoolsCheckACL(conn, obj->def) &&
virStoragePoolObjIsActive(obj))
virStoragePoolObjIsActive(obj) &&
!obj->internal)
nactive++;
virStoragePoolObjUnlock(obj);
}
@ -402,7 +403,8 @@ storageConnectListStoragePools(virConnectPtr conn,
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
if (virConnectListStoragePoolsCheckACL(conn, obj->def) &&
virStoragePoolObjIsActive(obj)) {
virStoragePoolObjIsActive(obj) &&
!obj->internal) {
if (VIR_STRDUP(names[got], obj->def->name) < 0) {
virStoragePoolObjUnlock(obj);
goto cleanup;
@ -436,7 +438,8 @@ storageConnectNumOfDefinedStoragePools(virConnectPtr conn) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
if (virConnectNumOfDefinedStoragePoolsCheckACL(conn, obj->def) &&
!virStoragePoolObjIsActive(obj))
!virStoragePoolObjIsActive(obj) &&
!obj->internal)
nactive++;
virStoragePoolObjUnlock(obj);
}
@ -461,7 +464,8 @@ storageConnectListDefinedStoragePools(virConnectPtr conn,
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
if (virConnectListDefinedStoragePoolsCheckACL(conn, obj->def) &&
!virStoragePoolObjIsActive(obj)) {
!virStoragePoolObjIsActive(obj) &&
!obj->internal) {
if (VIR_STRDUP(names[got], obj->def->name) < 0) {
virStoragePoolObjUnlock(obj);
goto cleanup;