[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-stable] [Qemu-block] [PATCH for-2.8] block: Let write zeroes f
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-stable] [Qemu-block] [PATCH for-2.8] block: Let write zeroes fallback work even with small max_transfer |
Date: |
Wed, 9 Nov 2016 13:49:55 +0000 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
On Tue, Nov 08, 2016 at 04:52:15PM -0600, Eric Blake wrote:
> Commit 443668ca rewrote the write_zeroes logic to guarantee that
> an unaligned request never crosses a cluster boundary. But
> in the rewrite, the new code assumed that at most one iteration
> would be needed to get to an alignment boundary.
>
> However, it is easy to trigger an assertion failure: the Linux
> kernel limits loopback devices to advertise a max_transfer of
> only 64k. Any operation that requires falling back to writes
> rather than more efficient zeroing must obey max_transfer during
> that fallback, which means an unaligned head may require multiple
> iterations of the write fallbacks before reaching the aligned
> boundaries, when layering a format with clusters larger than 64k
> atop the protocol of file access to a loopback device.
>
> Test case:
>
> $ qemu-img create -f qcow2 -o cluster_size=1M file 10M
> $ losetup /dev/loop2 /path/to/file
> $ qemu-io -f qcow2 /dev/loop2
> qemu-io> w 7m 1k
> qemu-io> w -z 8003584 2093056
Please include a qemu-iotests test case to protect against regressions.
Thanks,
Stefan
signature.asc
Description: PGP signature