qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-block] [PATCH for-2.8] block: Let write zeroes fa


From: Eric Blake
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH for-2.8] block: Let write zeroes fallback work even with small max_transfer
Date: Wed, 9 Nov 2016 14:06:13 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

On 11/09/2016 07:49 AM, Stefan Hajnoczi wrote:
> 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.

None of the existing qemu-iotests use losetup; I guess the closest thing
to do is crib from a test that uses passwordless sudo?

It will certainly be a separate commit, but I'll give it my best shot to
post something soon.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]