mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
vmdk: Implement .bdrv_co_create callback
This makes VMDK support blockdev-create. The implementation reuses the image creation code in vmdk_co_create_opts which now acceptes a callback pointer to "retrieve" BlockBackend pointers from the caller. This way we separate the logic between file/extent acquisition and initialization. The QAPI command parameters are mostly the same as the old create_opts except the dropped legacy @compat6 switch, which is redundant with @hwversion. Signed-off-by: Fam Zheng <famz@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
+322
-128
File diff suppressed because it is too large
Load Diff
@@ -4137,6 +4137,75 @@
|
||||
'size': 'size',
|
||||
'*cluster-size' : 'size' } }
|
||||
|
||||
##
|
||||
# @BlockdevVmdkSubformat:
|
||||
#
|
||||
# Subformat options for VMDK images
|
||||
#
|
||||
# @monolithicSparse: Single file image with sparse cluster allocation
|
||||
#
|
||||
# @monolithicFlat: Single flat data image and a descriptor file
|
||||
#
|
||||
# @twoGbMaxExtentSparse: Data is split into 2GB (per virtual LBA) sparse extent
|
||||
# files, in addition to a descriptor file
|
||||
#
|
||||
# @twoGbMaxExtentFlat: Data is split into 2GB (per virtual LBA) flat extent
|
||||
# files, in addition to a descriptor file
|
||||
#
|
||||
# @streamOptimized: Single file image sparse cluster allocation, optimized
|
||||
# for streaming over network.
|
||||
#
|
||||
# Since: 4.0
|
||||
##
|
||||
{ 'enum': 'BlockdevVmdkSubformat',
|
||||
'data': [ 'monolithicSparse', 'monolithicFlat', 'twoGbMaxExtentSparse',
|
||||
'twoGbMaxExtentFlat', 'streamOptimized'] }
|
||||
|
||||
##
|
||||
# @BlockdevVmdkAdapterType:
|
||||
#
|
||||
# Adapter type info for VMDK images
|
||||
#
|
||||
# Since: 4.0
|
||||
##
|
||||
{ 'enum': 'BlockdevVmdkAdapterType',
|
||||
'data': [ 'ide', 'buslogic', 'lsilogic', 'legacyESX'] }
|
||||
|
||||
##
|
||||
# @BlockdevCreateOptionsVmdk:
|
||||
#
|
||||
# Driver specific image creation options for VMDK.
|
||||
#
|
||||
# @file Where to store the new image file. This refers to the image
|
||||
# file for monolithcSparse and streamOptimized format, or the
|
||||
# descriptor file for other formats.
|
||||
# @size Size of the virtual disk in bytes
|
||||
# @extents Where to store the data extents. Required for monolithcFlat,
|
||||
# twoGbMaxExtentSparse and twoGbMaxExtentFlat formats. For
|
||||
# monolithicFlat, only one entry is required; for
|
||||
# twoGbMaxExtent* formats, the number of entries required is
|
||||
# calculated as extent_number = virtual_size / 2GB.
|
||||
# @subformat The subformat of the VMDK image. Default: "monolithicSparse".
|
||||
# @backing-file The path of backing file. Default: no backing file is used.
|
||||
# @adapter-type The adapter type used to fill in the descriptor. Default: ide.
|
||||
# @hwversion Hardware version. The meaningful options are "4" or "6".
|
||||
# Default: "4".
|
||||
# @zeroed-grain Whether to enable zeroed-grain feature for sparse subformats.
|
||||
# Default: false.
|
||||
#
|
||||
# Since: 4.0
|
||||
##
|
||||
{ 'struct': 'BlockdevCreateOptionsVmdk',
|
||||
'data': { 'file': 'BlockdevRef',
|
||||
'size': 'size',
|
||||
'*extents': ['BlockdevRef'],
|
||||
'*subformat': 'BlockdevVmdkSubformat',
|
||||
'*backing-file': 'str',
|
||||
'*adapter-type': 'BlockdevVmdkAdapterType',
|
||||
'*hwversion': 'str',
|
||||
'*zeroed-grain': 'bool' } }
|
||||
|
||||
|
||||
##
|
||||
# @SheepdogRedundancyType:
|
||||
#
|
||||
@@ -4331,6 +4400,7 @@
|
||||
'ssh': 'BlockdevCreateOptionsSsh',
|
||||
'vdi': 'BlockdevCreateOptionsVdi',
|
||||
'vhdx': 'BlockdevCreateOptionsVhdx',
|
||||
'vmdk': 'BlockdevCreateOptionsVmdk',
|
||||
'vpc': 'BlockdevCreateOptionsVpc'
|
||||
} }
|
||||
|
||||
|
||||
@@ -63,13 +63,15 @@
|
||||
'query-tpm-types',
|
||||
'ringbuf-read' ],
|
||||
'name-case-whitelist': [
|
||||
'ACPISlotType', # DIMM, visible through query-acpi-ospm-status
|
||||
'CpuInfoMIPS', # PC, visible through query-cpu
|
||||
'CpuInfoTricore', # PC, visible through query-cpu
|
||||
'QapiErrorClass', # all members, visible through errors
|
||||
'UuidInfo', # UUID, visible through query-uuid
|
||||
'X86CPURegister32', # all members, visible indirectly through qom-get
|
||||
'q_obj_CpuInfo-base' # CPU, visible through query-cpu
|
||||
'ACPISlotType', # DIMM, visible through query-acpi-ospm-status
|
||||
'CpuInfoMIPS', # PC, visible through query-cpu
|
||||
'CpuInfoTricore', # PC, visible through query-cpu
|
||||
'BlockdevVmdkSubformat', # all members, to match VMDK spec spellings
|
||||
'BlockdevVmdkAdapterType', # legacyESX, to match VMDK spec spellings
|
||||
'QapiErrorClass', # all members, visible through errors
|
||||
'UuidInfo', # UUID, visible through query-uuid
|
||||
'X86CPURegister32', # all members, visible indirectly through qom-get
|
||||
'q_obj_CpuInfo-base' # CPU, visible through query-cpu
|
||||
] } }
|
||||
|
||||
# Documentation generated with qapi-gen.py is in source order, with
|
||||
|
||||
Reference in New Issue
Block a user