diff mbox

qemu-img: simplify img_convert

Message ID 20170420140514.GM24486@lemon.lan
State New
Headers show

Commit Message

Fam Zheng April 20, 2017, 2:05 p.m. UTC
On Tue, 02/28 14:35, Peter Lieven wrote:
> img_convert has been around before there was an ImgConvertState or
> a block backend, but it has never been modified to directly use
> these structs. Change this by parsing parameters directly into
> the ImgConvertState and directly use BlockBackend where possible.
> Futhermore variable initalization has been reworked and sorted.
> 
> Signed-off-by: Peter Lieven <pl@kamp.de>

I see an iotest failure with this patch, in Kevin's block-next tree:

019 1s ... - output mismatch (see 019.out.bad)
Failures: 019
Failed 1 of 1 tests

Comments

Peter Lieven April 20, 2017, 2:08 p.m. UTC | #1
Am 20.04.2017 um 16:05 schrieb Fam Zheng:
> On Tue, 02/28 14:35, Peter Lieven wrote:
>> img_convert has been around before there was an ImgConvertState or
>> a block backend, but it has never been modified to directly use
>> these structs. Change this by parsing parameters directly into
>> the ImgConvertState and directly use BlockBackend where possible.
>> Futhermore variable initalization has been reworked and sorted.
>>
>> Signed-off-by: Peter Lieven <pl@kamp.de>
> I see an iotest failure with this patch, in Kevin's block-next tree:
>
> 019 1s ... - output mismatch (see 019.out.bad)
> --- /stor/work/qemu/tests/qemu-iotests/019.out	2017-04-17 16:19:56.523968474 +0800
> +++ 019.out.bad	2017-04-20 22:03:29.868216955 +0800
> @@ -1086,8 +1086,8 @@
>   
>   Checking if backing clusters are allocated when they shouldn't
>   
> -0/128 sectors allocated at offset 1 MiB
> -0/128 sectors allocated at offset 4.001 GiB
> +128/128 sectors allocated at offset 1 MiB
> +128/128 sectors allocated at offset 4.001 GiB
>   Reading
>   
>   === IO: pattern 42
> Failures: 019
> Failed 1 of 1 tests

Thanks for notifying, Fam.

@Kevin: Can you drop the patch again? I will send a V2 addressing this issue and the other comments

I have got.


Peter
Eric Blake April 20, 2017, 2:11 p.m. UTC | #2
On 04/20/2017 09:05 AM, Fam Zheng wrote:
> On Tue, 02/28 14:35, Peter Lieven wrote:
>> img_convert has been around before there was an ImgConvertState or
>> a block backend, but it has never been modified to directly use
>> these structs. Change this by parsing parameters directly into
>> the ImgConvertState and directly use BlockBackend where possible.
>> Futhermore variable initalization has been reworked and sorted.
>>
>> Signed-off-by: Peter Lieven <pl@kamp.de>
> 
> I see an iotest failure with this patch, in Kevin's block-next tree:
> 
> 019 1s ... - output mismatch (see 019.out.bad)
> --- /stor/work/qemu/tests/qemu-iotests/019.out	2017-04-17 16:19:56.523968474 +0800
> +++ 019.out.bad	2017-04-20 22:03:29.868216955 +0800
> @@ -1086,8 +1086,8 @@
>  
>  Checking if backing clusters are allocated when they shouldn't
>  
> -0/128 sectors allocated at offset 1 MiB
> -0/128 sectors allocated at offset 4.001 GiB
> +128/128 sectors allocated at offset 1 MiB
> +128/128 sectors allocated at offset 4.001 GiB

Hmm - I wonder if my patch to make 'zero with unmap' on an image with no
backing file prefer pure unallocated clusters over a reads-as-zero would
make a difference.
https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg01728.html

Testing now...
Eric Blake April 20, 2017, 2:18 p.m. UTC | #3
On 04/20/2017 09:11 AM, Eric Blake wrote:
> On 04/20/2017 09:05 AM, Fam Zheng wrote:
>> On Tue, 02/28 14:35, Peter Lieven wrote:
>>> img_convert has been around before there was an ImgConvertState or
>>> a block backend, but it has never been modified to directly use
>>> these structs. Change this by parsing parameters directly into
>>> the ImgConvertState and directly use BlockBackend where possible.
>>> Futhermore variable initalization has been reworked and sorted.
>>>
>>> Signed-off-by: Peter Lieven <pl@kamp.de>
>>
>> I see an iotest failure with this patch, in Kevin's block-next tree:
>>
>> 019 1s ... - output mismatch (see 019.out.bad)
>> --- /stor/work/qemu/tests/qemu-iotests/019.out	2017-04-17 16:19:56.523968474 +0800
>> +++ 019.out.bad	2017-04-20 22:03:29.868216955 +0800
>> @@ -1086,8 +1086,8 @@
>>  
>>  Checking if backing clusters are allocated when they shouldn't
>>  
>> -0/128 sectors allocated at offset 1 MiB
>> -0/128 sectors allocated at offset 4.001 GiB
>> +128/128 sectors allocated at offset 1 MiB
>> +128/128 sectors allocated at offset 4.001 GiB
> 
> Hmm - I wonder if my patch to make 'zero with unmap' on an image with no
> backing file prefer pure unallocated clusters over a reads-as-zero would
> make a difference.
> https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg01728.html
> 
> Testing now...

Nope, did not make a difference, although it's certainly related; per my
comment in that thread that:

    Note that technically, we _could_ write a cluster as unallocated
    rather than zero if a backing file exists but the backing file
    also reads as zero, but that's more expensive to determine, so
    this optimization is limited to qcow2 without a backing file.
Peter Lieven April 20, 2017, 2:39 p.m. UTC | #4
Am 20.04.2017 um 16:18 schrieb Eric Blake:
> On 04/20/2017 09:11 AM, Eric Blake wrote:
>> On 04/20/2017 09:05 AM, Fam Zheng wrote:
>>> On Tue, 02/28 14:35, Peter Lieven wrote:
>>>> img_convert has been around before there was an ImgConvertState or
>>>> a block backend, but it has never been modified to directly use
>>>> these structs. Change this by parsing parameters directly into
>>>> the ImgConvertState and directly use BlockBackend where possible.
>>>> Futhermore variable initalization has been reworked and sorted.
>>>>
>>>> Signed-off-by: Peter Lieven <pl@kamp.de>
>>> I see an iotest failure with this patch, in Kevin's block-next tree:
>>>
>>> 019 1s ... - output mismatch (see 019.out.bad)
>>> --- /stor/work/qemu/tests/qemu-iotests/019.out	2017-04-17 16:19:56.523968474 +0800
>>> +++ 019.out.bad	2017-04-20 22:03:29.868216955 +0800
>>> @@ -1086,8 +1086,8 @@
>>>   
>>>   Checking if backing clusters are allocated when they shouldn't
>>>   
>>> -0/128 sectors allocated at offset 1 MiB
>>> -0/128 sectors allocated at offset 4.001 GiB
>>> +128/128 sectors allocated at offset 1 MiB
>>> +128/128 sectors allocated at offset 4.001 GiB
>> Hmm - I wonder if my patch to make 'zero with unmap' on an image with no
>> backing file prefer pure unallocated clusters over a reads-as-zero would
>> make a difference.
>> https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg01728.html
>>
>> Testing now...
> Nope, did not make a difference, although it's certainly related; per my
> comment in that thread that:
>
>      Note that technically, we _could_ write a cluster as unallocated
>      rather than zero if a backing file exists but the backing file
>      also reads as zero, but that's more expensive to determine, so
>      this optimization is limited to qcow2 without a backing file.
>
>

I will look into this tomorrow.


Peter
Kevin Wolf April 20, 2017, 7:51 p.m. UTC | #5
Am 20.04.2017 um 16:08 hat Peter Lieven geschrieben:
> Am 20.04.2017 um 16:05 schrieb Fam Zheng:
> >On Tue, 02/28 14:35, Peter Lieven wrote:
> >>img_convert has been around before there was an ImgConvertState or
> >>a block backend, but it has never been modified to directly use
> >>these structs. Change this by parsing parameters directly into
> >>the ImgConvertState and directly use BlockBackend where possible.
> >>Futhermore variable initalization has been reworked and sorted.
> >>
> >>Signed-off-by: Peter Lieven <pl@kamp.de>
> >I see an iotest failure with this patch, in Kevin's block-next tree:
> >
> >019 1s ... - output mismatch (see 019.out.bad)
> >--- /stor/work/qemu/tests/qemu-iotests/019.out	2017-04-17 16:19:56.523968474 +0800
> >+++ 019.out.bad	2017-04-20 22:03:29.868216955 +0800
> >@@ -1086,8 +1086,8 @@
> >  Checking if backing clusters are allocated when they shouldn't
> >-0/128 sectors allocated at offset 1 MiB
> >-0/128 sectors allocated at offset 4.001 GiB
> >+128/128 sectors allocated at offset 1 MiB
> >+128/128 sectors allocated at offset 4.001 GiB
> >  Reading
> >  === IO: pattern 42
> >Failures: 019
> >Failed 1 of 1 tests
> 
> Thanks for notifying, Fam.
> 
> @Kevin: Can you drop the patch again? I will send a V2 addressing this
> issue and the other comments I have got.

I could, but if it doesn't take too long, I'd prefer to only do so when
v2 is there. There are already a few conflicting patches and I asked
their authors to rebase onto yours, so it wouldn't be nice if they
wouldn't apply again because I removed your patch...

Kevin
Peter Lieven April 21, 2017, 9:02 a.m. UTC | #6
Am 20.04.2017 um 21:51 schrieb Kevin Wolf:
> Am 20.04.2017 um 16:08 hat Peter Lieven geschrieben:
>> Am 20.04.2017 um 16:05 schrieb Fam Zheng:
>>> On Tue, 02/28 14:35, Peter Lieven wrote:
>>>> img_convert has been around before there was an ImgConvertState or
>>>> a block backend, but it has never been modified to directly use
>>>> these structs. Change this by parsing parameters directly into
>>>> the ImgConvertState and directly use BlockBackend where possible.
>>>> Futhermore variable initalization has been reworked and sorted.
>>>>
>>>> Signed-off-by: Peter Lieven <pl@kamp.de>
>>> I see an iotest failure with this patch, in Kevin's block-next tree:
>>>
>>> 019 1s ... - output mismatch (see 019.out.bad)
>>> --- /stor/work/qemu/tests/qemu-iotests/019.out	2017-04-17 16:19:56.523968474 +0800
>>> +++ 019.out.bad	2017-04-20 22:03:29.868216955 +0800
>>> @@ -1086,8 +1086,8 @@
>>>  Checking if backing clusters are allocated when they shouldn't
>>> -0/128 sectors allocated at offset 1 MiB
>>> -0/128 sectors allocated at offset 4.001 GiB
>>> +128/128 sectors allocated at offset 1 MiB
>>> +128/128 sectors allocated at offset 4.001 GiB
>>>  Reading
>>>  === IO: pattern 42
>>> Failures: 019
>>> Failed 1 of 1 tests
>> Thanks for notifying, Fam.
>>
>> @Kevin: Can you drop the patch again? I will send a V2 addressing this
>> issue and the other comments I have got.
> I could, but if it doesn't take too long, I'd prefer to only do so when
> v2 is there. There are already a few conflicting patches and I asked
> their authors to rebase onto yours, so it wouldn't be nice if they
> wouldn't apply again because I removed your patch...

error found, if backing file is passed via -o backing_file, s.target_has_backing was
not set to true.

I will send a V2 shortly including the other comments I got.

Peter

>
> Kevin
diff mbox

Patch

--- /stor/work/qemu/tests/qemu-iotests/019.out	2017-04-17 16:19:56.523968474 +0800
+++ 019.out.bad	2017-04-20 22:03:29.868216955 +0800
@@ -1086,8 +1086,8 @@ 
 
 Checking if backing clusters are allocated when they shouldn't
 
-0/128 sectors allocated at offset 1 MiB
-0/128 sectors allocated at offset 4.001 GiB
+128/128 sectors allocated at offset 1 MiB
+128/128 sectors allocated at offset 4.001 GiB
 Reading
 
 === IO: pattern 42