Skip to content

block: optimize zero writes with bdrv_write_zeroes

Peter Lieven qemu-devel 7 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest3 patches 1 replyIn review
  2. v41 patch 7 repliesSuperseded
  3. v3 posting 2/21 patch 9 repliesSuperseded
Earlier versions · 4
VersionPostedPatchesRepliesStatus
v3 posting 1/21 patch1 replySuperseded
v2 posting 2/21 patch3 repliesSuperseded
v2 RFC posting 1/21 patch5 repliesSuperseded
v1 RFC1 patch17 repliesSuperseded

Changes from the cover letter

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]

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3util: add qemu_iovec_is_zeroinclude/qemu-common.h util/iov.c+22 -00 replies
2/3blockdev: add a function to parse enum ids from stringsblockdev.c+17 -00 replies
3/3block: optimize zero writes with bdrv_write_zeroesblock.c block/qapi.c blockdev.c +5 more+86 -150 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v5 yet.

Read the v5 thread

Cover letter [Qemu-devel] [PATCHv5 0/3] block: optimize zero writes with bdrv_write_zeroes

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(-)
Signature · 1 line
1.7.9.5