[libvirt] [PATCH 19/35] qemu: block: Add support for creating 'format' layer for blockdev-add
John Ferlan
jferlan at redhat.com
Wed May 2 21:26:35 UTC 2018
On 04/25/2018 11:15 AM, Peter Krempa wrote:
> When using blockdev-add and friends, libvirt will need to create also
> properties for the qcow2/raw/... format handler in qemu. This patch adds
> the infrastructure and implements all formats known to libvirt including
> all properties which are expressed at the format level in qemu.
>
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
> src/qemu/qemu_block.c | 296 ++++++++++++++++++++++++++++++++++++++++++++++++++
> src/qemu/qemu_block.h | 3 +
> 2 files changed, 299 insertions(+)
>
There's a few inconsistencies with blank lines in switch/cases in
qemuBlockStorageSourceGetBlockdevFormatProps that need adjustment, but
otherwise,
Reviewed-by: John Ferlan <jferlan at redhat.com>
John
[...]
> +
> +static virJSONValuePtr
> +qemuBlockStorageSourceGetBlockdevFormatProps(virStorageSourcePtr src)
> +{
> + const char *driver = NULL;
> + virJSONValuePtr props = NULL;
> + virJSONValuePtr ret = NULL;
> +
> + if (!(props = qemuBlockStorageSourceGetBlockdevFormatCommonProps(src)))
> + goto cleanup;
> +
> + switch ((virStorageFileFormat) src->format) {
> + case VIR_STORAGE_FILE_FAT:
> + /* The fat layer is emulated by the storage access layer, so we need to
> + * put a raw layer on top */
> + case VIR_STORAGE_FILE_RAW:
> + if (qemuBlockStorageSourceGetFormatRawProps(src, props) < 0)
> + goto cleanup;
> +
Unnecessary blank line.
> + break;
> +
> + case VIR_STORAGE_FILE_QCOW2:
> + if (qemuBlockStorageSourceGetFormatQcow2Props(src, props) < 0)
> + goto cleanup;
> + break;
> +
> + case VIR_STORAGE_FILE_QCOW:
> + if (qemuBlockStorageSourceGetFormatQcowGenericProps(src, "qcow", props) < 0)
> + goto cleanup;
> + break;
> +
> + /* formats without any special parameters */
> + case VIR_STORAGE_FILE_PLOOP:
> + driver = "parallels";
> + break;
add blank line
> + case VIR_STORAGE_FILE_VHD:
> + driver = "vhdx";
> + break;
add blank line
> + case VIR_STORAGE_FILE_BOCHS:
> + case VIR_STORAGE_FILE_CLOOP:
> + case VIR_STORAGE_FILE_DMG:
> + case VIR_STORAGE_FILE_VDI:
> + case VIR_STORAGE_FILE_VPC:
> + case VIR_STORAGE_FILE_QED:
> + case VIR_STORAGE_FILE_VMDK:
> + driver = virStorageFileFormatTypeToString(src->format);
> + break;
> +
> + case VIR_STORAGE_FILE_AUTO_SAFE:
> + case VIR_STORAGE_FILE_AUTO:
> + case VIR_STORAGE_FILE_NONE:
> + case VIR_STORAGE_FILE_COW:
> + case VIR_STORAGE_FILE_ISO:
> + case VIR_STORAGE_FILE_DIR:
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("mishandled storage format '%s'"),
> + virStorageFileFormatTypeToString(src->format));
> + goto cleanup;
> +
> + case VIR_STORAGE_FILE_LAST:
> + default:
> + virReportEnumRangeError(virStorageFileFormat, src->format);
> + goto cleanup;
> + }
[...]
More information about the libvir-list
mailing list