[v2,0/4] vmdk: Implement x-blockdev-create
mbox series

Message ID 20180515153634.5868-1-famz@redhat.com
Headers show
  • vmdk: Implement x-blockdev-create
Related show


Fam Zheng May 15, 2018, 3:36 p.m. UTC
v2: Respin after comments by Markus:
    - QAPI: drop qapi_enum_parse_full patch.
    - Drop vmdk_subformat_str.
    - Fix an uninitialized variable error.
    - Authentic casing for subformat enum.

This adds vmdk support to x-blockdev-create command.

Unlike other formats, several VMDK subformats consists of multiple files
(extents). In the QAPI interface we use an array of BlockdevRef to pass in. The
management tool need to figure out how many extent files are needed but that is
simple enough. There is a convention how VMware (as well as qemu-img) builds
the extents' file names, but that isn't standardized, therefore it is not
documented as part of this API.  Extraneous extents in the end of the provided
array are ignored.

A big part of the patch is refactoring so that BlockdevRef parsing can be
hooked in.

Please review! Thanks.

Fam Zheng (4):
  vmdk: Refactor vmdk_create_extent
  vmdk: Implement .bdrv_co_create callback
  iotests: Filter cid numbers in VMDK extent info
  iotests: Add VMDK tests for blockdev-create

 block/vmdk.c                     | 530 +++++++++++++++++++++++++++------------
 qapi/block-core.json             |  67 ++++-
 qapi/qapi-schema.json            |   1 +
 tests/qemu-iotests/214           | 268 ++++++++++++++++++++
 tests/qemu-iotests/214.out       | 304 ++++++++++++++++++++++
 tests/qemu-iotests/common.filter |   1 +
 tests/qemu-iotests/group         |   1 +
 7 files changed, 1016 insertions(+), 156 deletions(-)
 create mode 100755 tests/qemu-iotests/214
 create mode 100644 tests/qemu-iotests/214.out