qemu: block: Add generator for the 'copy-on-read' blockdev driver

The copy on read functionality is done using a separate layer in the
backing chain. Add function to generate properties for it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2018-06-11 13:25:20 +02:00
parent 8b1a2add3b
commit 9843f22c2a
2 changed files with 24 additions and 0 deletions

View File

@ -1745,3 +1745,25 @@ qemuBlockSnapshotAddLegacy(virJSONValuePtr actions,
VIR_FREE(source);
return ret;
}
/**
* qemuBlockStorageGetCopyOnReadProps:
* @disk: disk with copy-on-read enabled
*
* Creates blockdev properties for a disk copy-on-read layer.
*/
virJSONValuePtr
qemuBlockStorageGetCopyOnReadProps(virDomainDiskDefPtr disk)
{
qemuDomainDiskPrivatePtr priv = QEMU_DOMAIN_DISK_PRIVATE(disk);
virJSONValuePtr ret = NULL;
ignore_value(virJSONValueObjectCreate(&ret,
"s:driver", "copy-on-read",
"s:node-name", priv->nodeCopyOnRead,
"s:file", disk->src->nodeformat,
NULL));
return ret;
}

View File

@ -67,6 +67,8 @@ qemuBlockStorageSourceGetURI(virStorageSourcePtr src);
virJSONValuePtr
qemuBlockStorageSourceGetBlockdevProps(virStorageSourcePtr src);
virJSONValuePtr
qemuBlockStorageGetCopyOnReadProps(virDomainDiskDefPtr disk);
typedef struct qemuBlockStorageSourceAttachData qemuBlockStorageSourceAttachData;
typedef qemuBlockStorageSourceAttachData *qemuBlockStorageSourceAttachDataPtr;