On Thu, Apr 17, 2025 at 05:10:53PM -0400, Stefan Hajnoczi wrote:
> The Linux BLKZEROOUT ioctl is only invoked when BDRV_O_NOCACHE is set
> because old kernels did not invalidate the page cache. In that case
> mixing BLKZEROOUT with buffered I/O could lead to corruption.
>
> However, Linux 4.9 commit 22dd6d356628 ("block: invalidate the page
> cache when issuing BLKZEROOUT") made BLKZEROOUT coherent with the page
> cache.
>
> I have checked that Linux 4.9+ kernels are shipped at least as far back
> as Debian 10 (buster), openSUSE Leap 15.2, and RHEL/CentOS 8.
>
> Use BLKZEROOUT with buffered I/O, mostly so `qemu-img ... -t
> writeback` can offload write zeroes.
>
> Cc: Paolo Bonzini <[email protected]>
> Cc: Christoph Hellwig <[email protected]>
> Signed-off-by: Stefan Hajnoczi <[email protected]>
> ---
> block/file-posix.c | 11 -----------
> 1 file changed, 11 deletions(-)
Reviewed-by: Eric Blake <[email protected]>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization: qemu.org | libguestfs.org