Previouly, conversion from ISO to VMDK with subformat=streamOptimized fails:
$ ./qemu-img convert -O vmdk -o subformat=streamOptimized foo.iso bar.vmdk VMDK: can't write to allocated cluster for streamOptimized qemu-img: error while writing sector 64: Input/output error Current code in qemu-img.c picks the normal convert loop for this case, rather than the "compress == true" loop, which writes in target cluster size. In VMDK streamOptimized, writes must be in cluster unit, because write to an allocated cluster is not supported. This series adds an is_compressed field in BlockDriverInfo, and use compressed convertion loop if the block driver set this field to true. Implement .bdrv_get_info and .bdrv_write_compressed in VMDK driver to fit into this procedure. v2: Rebase to current master. Fam Zheng (5): qemu-img: Convert by cluster size if target is compressed vmdk: Implement .bdrv_write_compressed block: Change BlockDriverInfo.cluster_size to 64 bits vmdk: Implement .bdrv_get_info() mirror: Check for bdrv_get_info result block/mirror.c | 4 ++-- block/vmdk.c | 33 +++++++++++++++++++++++++++++++++ include/block/block.h | 3 ++- qemu-img.c | 3 +++ tests/qemu-iotests/059.out | 4 ++++ 5 files changed, 44 insertions(+), 3 deletions(-) -- 1.8.5.4