qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [Fwd: Re: [PATCH 1/2] qemu-img convert: Rewrite copying


From: Peter Lieven
Subject: Re: [Qemu-devel] [Fwd: Re: [PATCH 1/2] qemu-img convert: Rewrite copying logic]
Date: Fri, 20 Feb 2015 14:30:34 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0

Am 20.02.2015 um 14:27 schrieb Peter Lieven:
>
> On 2015-02-19 at 10:47, Kevin Wolf wrote:
>> Am 18.02.2015 um 18:18 hat Max Reitz geschrieben:
> [snip]
>
>>> Actually, now that I'm looking at is_allocated_sectors_min(), if the
>>> first sectors is not allocated, it will return false and thus both
>>> the current qemu-img convert and the new one after this patch won't
>>> write data. That's a bug, I think (because it is guaranteed by the
>>> man page).
>> Or the description in the man page is wrong.
>>
>> The intention with -S was that we avoid splitting up writes into too
>> many small chunks because that costs a lot of time. If you look at it
>> from that angle, it's doing exactly the right thing because skipping
>> zeros at the start doesn't increase the number of write requests.
> Feel free to fix it. But I remember someone recently asking about
> preallocation for qemu-img convert in the #qemu IRC channel, and "-S 0"
> was one of the valid answers.
>
> The nice thing about -S 0 is that it works with all image formats; I
> know that qcow2 is always our main concern (especially when it comes to
> the target of qemu-img convert), but I think using -S 0 for
> preallocation is justified.
>
> Considering that in this case the man page was lying (because the code
> did not allocate everything), I'd be fine with fixing up the man page
> and leaving the behavior as-is, though, too.

For the uncompressed case the code *did* allocate everyting.
has_zero_init was always set to 0 for -S 0 regardless what the backend
reported and in this case is_allocated_sectors_min is never called.

For the new version I would use the same behaviour altough you
might bdrv_write_zeroes to optimize the write, but in the -S 0 case
without BDRV_REQ_MAY_UNMAP.

Peter



reply via email to

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