提交 3bd69ab9 编写于 作者: P Peter Krempa

util: storage: Add function to transfer config parts to new chain element

We are going to modify storage source chains in place. Add a helper that
will copy relevant information such as security labels to the new
element if that doesn't contain it.
上级 45feb5d3
......@@ -1925,6 +1925,7 @@ virStorageSourceCopy;
virStorageSourceFree;
virStorageSourceGetActualType;
virStorageSourceGetSecurityLabelDef;
virStorageSourceInitChainElement;
virStorageSourceIsLocalStorage;
virStorageSourceNewFromBacking;
virStorageSourcePoolDefFree;
......
......@@ -1885,6 +1885,46 @@ virStorageSourceCopy(const virStorageSource *src,
}
/**
* virStorageSourceInitChainElement:
* @newelem: New backing chain element disk source
* @old: Existing top level disk source
* @force: Force-copy the information
*
* Transfers relevant information from the existing disk source to the new
* backing chain element if they weren't supplied so that labelling info
* and possibly other stuff is correct.
*
* If @force is true, user-supplied information for the new backing store
* element is overwritten from @old instead of keeping it.
*
* Returns 0 on success, -1 on error.
*/
int
virStorageSourceInitChainElement(virStorageSourcePtr newelem,
virStorageSourcePtr old,
bool force)
{
int ret = -1;
if (force) {
virStorageSourceSeclabelsClear(newelem);
}
if (!newelem->seclabels &&
virStorageSourceSeclabelsCopy(newelem, old) < 0)
goto cleanup;
newelem->shared = old->shared;
newelem->readonly = old->readonly;
ret = 0;
cleanup:
return ret;
}
void
virStorageSourcePoolDefFree(virStorageSourcePoolDefPtr def)
{
......
......@@ -345,6 +345,9 @@ void virStorageNetHostDefFree(size_t nhosts, virStorageNetHostDefPtr hosts);
virStorageNetHostDefPtr virStorageNetHostDefCopy(size_t nhosts,
virStorageNetHostDefPtr hosts);
int virStorageSourceInitChainElement(virStorageSourcePtr newelem,
virStorageSourcePtr old,
bool force);
void virStorageSourcePoolDefFree(virStorageSourcePoolDefPtr def);
void virStorageSourceClear(virStorageSourcePtr def);
int virStorageSourceGetActualType(virStorageSourcePtr def);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册