On 01.02.23 16:27, Stefan Hajnoczi wrote:
When a write request is converted into a write zeroes request by the
detect-zeroes= feature, it is no longer associated with an I/O buffer.
The BDRV_REQ_REGISTERED_BUF flag doesn't make sense without an I/O
buffer and must be cleared because bdrv_co_do_pwrite_zeroes() fails with
-EINVAL when it's set.

Fiona Ebner <f.eb...@proxmox.com> bisected and diagnosed this QEMU 7.2
regression where writes containing zeroes to a blockdev with
discard=unmap,detect-zeroes=unmap fail.

Buglink: https://gitlab.com/qemu-project/qemu/-/issues/1404
Fixes: e8b6535533be ("block: add BDRV_REQ_REGISTERED_BUF request flag")
Tested-by: Fiona Ebner <f.eb...@proxmox.com>
Cc: qemu-sta...@nongnu.org
Reviewed-by: Eric Blake <ebl...@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>
---
  block/io.c | 3 +++
  1 file changed, 3 insertions(+)

Reviewed-by: Hanna Czenczek <hre...@redhat.com>


Reply via email to