this series tries to optimize zero write requests by automatically using bdrv_write_zeroes if it is supported by the format. More details can be found in the commit message to patch 3.
Changes: v4->v5: - split patch into 3 separate patches [Kevin, Eric] - use QEMU_ALIGN_DOWN in qemu_iovec_is_zero [Kevin] - remove check for bs->file from the "pretty long condition" [Kevin] - added possible values for discard-zeroes to QemuOptsList [Eric] - fail if detect-zeroes = unmap is choosen without discard = unmap [Kevin] - show detect-zeroes mode always in hmp if enabled [Kevin] v3->v4: - use QAPI generated enum and lookup table [Kevin] - added more details about the options in the comments of the qapi-schema [Eric] - changed the type of detect_zeroes from str to BlockdevDetectZeroesOptions. I left the name as is because it is consistent with e.g. BlockdevDiscardOptions or BlockdevAioOptions [Eric] - changed the parse function in blockdev_init to be generic usable for other enum parameters v2->v3: - moved parameter parsing to blockdev_init - added per device detect_zeroes status to hmp (info block -v) and qmp (query-block) [Eric] - added support to enable detect-zeroes also for hot added devices [Eric] - added missing entry to qemu_common_drive_opts - fixed description of qemu_iovec_is_zero [Fam] v1->v2: - added tests to commit message (Markus) RFCv2->v1: - fixed paramter parsing strncmp -> strcmp (Eric) - fixed typo (choosen->chosen) (Eric) - added second example to commit msg RFCv1->RFCv2: - add detect-zeroes=off|on|unmap knob to drive cmdline parameter - call zero detection only for format (bs->file != NULL) Peter Lieven (3): util: add qemu_iovec_is_zero blockdev: add a function to parse enum ids from strings block: optimize zero writes with bdrv_write_zeroes block.c | 9 ++++++++ block/qapi.c | 1 + blockdev.c | 41 +++++++++++++++++++++++++++++++++++ hmp.c | 5 +++++ include/block/block_int.h | 1 + include/qemu-common.h | 1 + qapi-schema.json | 52 ++++++++++++++++++++++++++++++++------------- qemu-options.hx | 6 ++++++ qmp-commands.hx | 3 +++ util/iov.c | 21 ++++++++++++++++++ 10 files changed, 125 insertions(+), 15 deletions(-) -- 1.7.9.5