mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: Add possibility to prepare top image only for attachment via blockdev
qemuBuildStorageSourceChainAttachPrepareBlockdev prepares the full backing chain for attachment via blockdev. For snapshots we'll need to prepare one image only as it needs to be plugged on top of the existing chain. This patch introduces qemuBuildStorageSourceChainAttachPrepareBlockdevTop which prepares only @top similarly to the original function by splitting out the functionality into an internal function so that the API does not change. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
6115b5e7d0
commit
dfc980ab97
@ -11159,16 +11159,10 @@ qemuBuildStorageSourceChainAttachPrepareDrive(virDomainDiskDefPtr disk,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* qemuBuildStorageSourceChainAttachPrepareBlockdev:
|
||||
* @top: storage source chain
|
||||
* @qemuCaps: qemu capabilities object
|
||||
*
|
||||
* Prepares qemuBlockStorageSourceChainDataPtr for attaching @top via -blockdev.
|
||||
*/
|
||||
qemuBlockStorageSourceChainDataPtr
|
||||
qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
|
||||
virQEMUCapsPtr qemuCaps)
|
||||
static qemuBlockStorageSourceChainDataPtr
|
||||
qemuBuildStorageSourceChainAttachPrepareBlockdevInternal(virStorageSourcePtr top,
|
||||
virQEMUCapsPtr qemuCaps,
|
||||
bool onlyTop)
|
||||
{
|
||||
VIR_AUTOPTR(qemuBlockStorageSourceAttachData) elem = NULL;
|
||||
VIR_AUTOPTR(qemuBlockStorageSourceChainData) data = NULL;
|
||||
@ -11186,7 +11180,44 @@ qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
|
||||
|
||||
if (VIR_APPEND_ELEMENT(data->srcdata, data->nsrcdata, elem) < 0)
|
||||
return NULL;
|
||||
|
||||
if (onlyTop)
|
||||
break;
|
||||
}
|
||||
|
||||
VIR_RETURN_PTR(data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* qemuBuildStorageSourceChainAttachPrepareBlockdev:
|
||||
* @top: storage source chain
|
||||
* @qemuCaps: qemu capabilities object
|
||||
*
|
||||
* Prepares qemuBlockStorageSourceChainDataPtr for attaching the chain of images
|
||||
* starting at @top via -blockdev.
|
||||
*/
|
||||
qemuBlockStorageSourceChainDataPtr
|
||||
qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
|
||||
virQEMUCapsPtr qemuCaps)
|
||||
{
|
||||
return qemuBuildStorageSourceChainAttachPrepareBlockdevInternal(top, qemuCaps,
|
||||
false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* qemuBuildStorageSourceChainAttachPrepareBlockdevTop:
|
||||
* @top: storage source chain
|
||||
* @qemuCaps: qemu capabilities object
|
||||
*
|
||||
* Prepares qemuBlockStorageSourceChainDataPtr for attaching of @top image only
|
||||
* via -blockdev.
|
||||
*/
|
||||
qemuBlockStorageSourceChainDataPtr
|
||||
qemuBuildStorageSourceChainAttachPrepareBlockdevTop(virStorageSourcePtr top,
|
||||
virQEMUCapsPtr qemuCaps)
|
||||
{
|
||||
return qemuBuildStorageSourceChainAttachPrepareBlockdevInternal(top, qemuCaps,
|
||||
true);
|
||||
}
|
||||
|
@ -117,6 +117,9 @@ qemuBlockStorageSourceChainDataPtr
|
||||
qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
|
||||
virQEMUCapsPtr qemuCaps);
|
||||
|
||||
qemuBlockStorageSourceChainDataPtr
|
||||
qemuBuildStorageSourceChainAttachPrepareBlockdevTop(virStorageSourcePtr top,
|
||||
virQEMUCapsPtr qemuCaps);
|
||||
|
||||
char
|
||||
*qemuBuildDiskDeviceStr(const virDomainDef *def,
|
||||
|
Loading…
x
Reference in New Issue
Block a user