* virStoragePoolObjListAdd:
* @pools: Storage Pool object list pointer
* @def: Storage pool definition to add or update
- * @check_active: If true, ensure that pool is not active
+ * @flags: bitwise-OR of VIR_STORAGE_POOL_OBJ_LIST_* flags
*
* Lookup the @def to see if it already exists in the @pools in order
* to either update or add if it does not exist.
*
+ * If VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE is set in @flags
+ * then this will fail if the pool exists and is active.
+ *
* Returns locked and reffed object pointer or NULL on error
*/
virStoragePoolObjPtr
virStoragePoolObjListAdd(virStoragePoolObjListPtr pools,
virStoragePoolDefPtr def,
- bool check_active)
+ unsigned int flags)
{
virStoragePoolObjPtr obj = NULL;
char uuidstr[VIR_UUID_STRING_BUFLEN];
if (virStoragePoolObjSourceFindDuplicate(pools, def) < 0)
goto error;
- rc = virStoragePoolObjIsDuplicate(pools, def, check_active, &obj);
+ rc = virStoragePoolObjIsDuplicate(pools, def,
+ !!(flags & VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE),
+ &obj);
if (rc < 0)
goto error;
return NULL;
}
- if (!(obj = virStoragePoolObjListAdd(pools, def, false)))
+ if (!(obj = virStoragePoolObjListAdd(pools, def, 0)))
return NULL;
def = NULL;
}
/* create the object */
- if (!(obj = virStoragePoolObjListAdd(pools, def, true)))
+ if (!(obj = virStoragePoolObjListAdd(pools, def,
+ VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE)))
goto cleanup;
def = NULL;
virStorageVolPtr **vols,
virStoragePoolVolumeACLFilter filter);
+typedef enum {
+ VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1),
+} virStoragePoolObjListFlags;
+
virStoragePoolObjPtr
virStoragePoolObjListAdd(virStoragePoolObjListPtr pools,
virStoragePoolDefPtr def,
- bool check_active);
+ unsigned int flags);
int
virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
if ((backend = virStorageBackendForType(newDef->type)) == NULL)
goto cleanup;
- if (!(obj = virStoragePoolObjListAdd(driver->pools, newDef, true)))
+ if (!(obj = virStoragePoolObjListAdd(driver->pools, newDef,
+ VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE)))
goto cleanup;
newDef = NULL;
def = virStoragePoolObjGetDef(obj);
if (virStorageBackendForType(newDef->type) == NULL)
goto cleanup;
- if (!(obj = virStoragePoolObjListAdd(driver->pools, newDef, false)))
+ if (!(obj = virStoragePoolObjListAdd(driver->pools, newDef, 0)))
goto cleanup;
newDef = virStoragePoolObjGetNewDef(obj);
def = virStoragePoolObjGetDef(obj);
if (!def)
return -1;
- if (!(obj = virStoragePoolObjListAdd(privconn->pools, def, false))) {
+ if (!(obj = virStoragePoolObjListAdd(privconn->pools, def, 0))) {
virStoragePoolDefFree(def);
return -1;
}
if (!(newDef = virStoragePoolDefParseString(xml)))
goto cleanup;
- if (!(obj = virStoragePoolObjListAdd(privconn->pools, newDef, true)))
+ if (!(obj = virStoragePoolObjListAdd(privconn->pools, newDef,
+ VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE)))
goto cleanup;
newDef = NULL;
def = virStoragePoolObjGetDef(obj);
newDef->allocation = defaultPoolAlloc;
newDef->available = defaultPoolCap - defaultPoolAlloc;
- if (!(obj = virStoragePoolObjListAdd(privconn->pools, newDef, false)))
+ if (!(obj = virStoragePoolObjListAdd(privconn->pools, newDef, 0)))
goto cleanup;
newDef = NULL;
def = virStoragePoolObjGetDef(obj);