virstorageobj: Introduce VIR_STORAGE_POOL_OBJ_LIST_ADD_LIVE flag
This flag can be used to denote that the definition we're trying to assign to a pool object is live definition and thus the inactive definition should be saved into ->newDef. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
bc281fec0f
commit
1340327f48
@ -1508,14 +1508,18 @@ virStoragePoolObjSourceFindDuplicate(virStoragePoolObjListPtr pools,
|
|||||||
static void
|
static void
|
||||||
virStoragePoolObjAssignDef(virStoragePoolObjPtr obj,
|
virStoragePoolObjAssignDef(virStoragePoolObjPtr obj,
|
||||||
virStoragePoolDefPtr def,
|
virStoragePoolDefPtr def,
|
||||||
unsigned int flgs ATTRIBUTE_UNUSED)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
if (!virStoragePoolObjIsActive(obj)) {
|
if (virStoragePoolObjIsActive(obj)) {
|
||||||
virStoragePoolDefFree(obj->def);
|
|
||||||
obj->def = def;
|
|
||||||
} else {
|
|
||||||
virStoragePoolDefFree(obj->newDef);
|
virStoragePoolDefFree(obj->newDef);
|
||||||
obj->newDef = def;
|
obj->newDef = def;
|
||||||
|
} else {
|
||||||
|
if (!obj->newDef &&
|
||||||
|
flags & VIR_STORAGE_POOL_OBJ_LIST_ADD_LIVE)
|
||||||
|
VIR_STEAL_PTR(obj->newDef, obj->def);
|
||||||
|
|
||||||
|
virStoragePoolDefFree(obj->def);
|
||||||
|
obj->def = def;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1529,6 +1533,11 @@ virStoragePoolObjAssignDef(virStoragePoolObjPtr obj,
|
|||||||
* Lookup the @def to see if it already exists in the @pools in order
|
* Lookup the @def to see if it already exists in the @pools in order
|
||||||
* to either update or add if it does not exist.
|
* to either update or add if it does not exist.
|
||||||
*
|
*
|
||||||
|
* Use VIR_STORAGE_POOL_OBJ_LIST_ADD_LIVE to denote that @def
|
||||||
|
* refers to an active definition and thus any possible inactive
|
||||||
|
* definition found should be saved to ->newDef (in case of
|
||||||
|
* future restore).
|
||||||
|
*
|
||||||
* If VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE is set in @flags
|
* If VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE is set in @flags
|
||||||
* then this will fail if the pool exists and is active.
|
* then this will fail if the pool exists and is active.
|
||||||
*
|
*
|
||||||
|
@ -195,6 +195,7 @@ virStoragePoolObjVolumeListExport(virConnectPtr conn,
|
|||||||
virStoragePoolVolumeACLFilter filter);
|
virStoragePoolVolumeACLFilter filter);
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
VIR_STORAGE_POOL_OBJ_LIST_ADD_LIVE = (1 << 0),
|
||||||
VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1),
|
VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1),
|
||||||
} virStoragePoolObjListFlags;
|
} virStoragePoolObjListFlags;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user