this series adds logical block provisioning functions to the iscsi layer. it adds the ability to write sparse images to iscsi targets which support UNMAP and LBPRZ via qemu-img. additional block-migration is enhanced to support an encoding for zero blocks on the network and efficiently writing those zero blocks at the destination if the driver supports it.
many thanks to Paolo, Kevin and Ronnie for their useful comments. changes in v2: - added patch to read unmap limits from block limits VPD page - use a generic callback and new framework for coroutines that can also be used for further porting of the remaining aio routines. iscsi_co_{write_zeroes,is_allocated} use this new framework. commands are now also retried on check conditions. - iscsi_co_write_zeroes checks now for BDRV_O_UNMAP and if the request is not too big for a single UNMAP call. - added a patch to let iscsi_create unmap the whole device if thin provisioning is supported and the unmapped blocks read as zero. in this case return .has_zero_init = 1. - added a patch to let aio_discard silently fail if UNMAP is not supported or the request is too big. - factored out almost all conversions between qemu and lun sector size. - changed the alignment checks from assert() to failing the request. - dropped the qemu-img patch that called out to bdrv_write_zeroes. Peter Peter Lieven (11): iscsi: add logical block provisioning information to iscsilun iscsi: read unmap info from block limits vpd page iscsi: add bdrv_co_is_allocated iscsi: add bdrv_co_write_zeroes block: add bdrv_write_zeroes() block/raw: add bdrv_co_write_zeroes iscsi: let bdrv_create conditionally zero out the device block-migration: efficiently encode zero blocks iscsi: factor out sector conversions iscsi: ignore aio_discard if unsupported iscsi: assert that sectors are aligned to LUN blocksize block-migration.c | 29 +++- block.c | 27 ++- block/iscsi.c | 365 ++++++++++++++++++++++++++++++++++++++++- block/raw.c | 8 + include/block/block.h | 2 + include/migration/qemu-file.h | 1 + savevm.c | 2 +- 7 files changed, 414 insertions(+), 20 deletions(-) -- 1.7.9.5