提交 1340327f 编写于 作者: M Michal Privoznik

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: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 bc281fec
......@@ -1508,14 +1508,18 @@ virStoragePoolObjSourceFindDuplicate(virStoragePoolObjListPtr pools,
static void
virStoragePoolObjAssignDef(virStoragePoolObjPtr obj,
virStoragePoolDefPtr def,
unsigned int flgs ATTRIBUTE_UNUSED)
unsigned int flags)
{
if (!virStoragePoolObjIsActive(obj)) {
virStoragePoolDefFree(obj->def);
obj->def = def;
} else {
if (virStoragePoolObjIsActive(obj)) {
virStoragePoolDefFree(obj->newDef);
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
* 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
* then this will fail if the pool exists and is active.
*
......
......@@ -195,6 +195,7 @@ virStoragePoolObjVolumeListExport(virConnectPtr conn,
virStoragePoolVolumeACLFilter filter);
typedef enum {
VIR_STORAGE_POOL_OBJ_LIST_ADD_LIVE = (1 << 0),
VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1),
} virStoragePoolObjListFlags;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册