All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nir Soffer <nirsof@gmail.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Cc: Kevin Wolf <kwolf@redhat.com>, qemu-block <qemu-block@nongnu.org>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Max Reitz <mreitz@redhat.com>, Nir Soffer <nsoffer@redhat.com>,
	Eric Blake <eblake@redhat.com>
Subject: Re: [PATCH] qemu-{img,nbd}: Don't report zeroed cluster as a hole
Date: Fri, 11 Jun 2021 12:05:19 +0300	[thread overview]
Message-ID: <DC0BA400-DC91-4450-9408-915B2152EFD5@gmail.com> (raw)
In-Reply-To: <49ed9c03-eb24-4e8a-1b5f-8a291466a7b9@virtuozzo.com>

[-- Attachment #1: Type: text/plain, Size: 3352 bytes --]



> ‫ב-11 ביוני 2021, בשעה 11:14, ‏‏Vladimir Sementsov-Ogievskiy ‏<vsementsov@virtuozzo.com> כתב/ה:‬
> 
> 11.06.2021 11:09, Kevin Wolf wrote:
>> Am 10.06.2021 um 22:46 hat Eric Blake geschrieben:
>>>> On Thu, Jun 10, 2021 at 11:09:05PM +0300, Nir Soffer wrote:
>>>>>> But:
>>>>>> 
>>>>>> $ qemu-img map --output=json -f qcow2 json:'{"driver":"qcow2","backing":null, \
>>>>>>   "file":{"driver":"file","filename":"top.qcow2"}}'
>>>>>> [{ "start": 0, "length": 65536, "depth": 0, "zero": true, "data": false},
>>>>>> { "start": 65536, "length": 65536, "depth": 0, "zero": false, "data": true, "offset": 327680},
>>>>>> { "start": 131072, "length": 131072, "depth": 0, "zero": true, "data": false}]
>>>>>> 
>>>>>> also reports the entire file at "depth":0, which is misleading, since
>>>>>> we have just been arguing from the qemu:allocation-depth perspective
>>>>>> (and also from bdrv_block_status) that the qcow2 image is NOT 100%
>>>>>> allocated (in the sense where allocation == data comes locally).
>>>>>> Perhaps it might be better if we tweaked the above qemu-img map to
>>>>>> produce:
>>>>>> 
>>>>>> [{ "start": 0, "length": 65536, "depth": -1, "zero": true, "data": false},
>>>>>> { "start": 65536, "length": 65536, "depth": 0, "zero": false, "data": true, "offset": 327680},
>>>>>> { "start": 131072, "length": 65536, "depth": 0, "zero": true, "data": false},
>>>>>> { "start": 196608, "length": 65536, "depth": -1, "zero": true, "data": false}]
>>>>> 
>>>>> It will be more consistent with "offset" to drop "depth" from output
>>>>> if we don't have it:
>>>>> 
>>>>>     [{ "start": 0, "length": 65536, "zero": true, "data": false},
>>>>>      { "start": 65536, "length": 65536, "depth": 0, "zero": false,
>>>>> "data": true, "offset": 327680},
>>>>>      { "start": 131072, "length": 65536, "depth": 0, "zero": true,
>>>>> "data": false},
>>>>>      { "start": 196608, "length": 65536, "zero": true, "data": false}]
>>> 
>>> Yes, that might work as well.  But we didn't previously document
>>> depth to be optional.  Removing something from output risks breaking
>>> more downstream tools that expect it to be non-optional, compared to
>>> providing a new value.
>> A negative value isn't any less unexpected than a missing key. I don't
>> think any existing tool would be able to handle it. Encoding different
>> meanings in a single value isn't very QAPI-like either. Usually strings
>> that are parsed are the problem, but negative integers really isn't that
>> much different. I don't really like this solution.
>> Leaving out the depth feels like a better suggestion to me.
>> But anyway, this seems to only happen at the end of the backing chain.
>> So if the backing chain consistents of n images, why not report 'depth':
>> n + 1? So, in the above example, you would get 1. I think this has the
>> best chances of tools actually working correctly with the new output,
>> even though it's still not unlikely to break something.
> 
> Did you consider just add a new field?
> 
> So, "depth" keeps its meaning "which level provides data".
> 
> And we add additional optional field like
> 
> absolutely-completely-absent: bool

hole: bool?

> 
> Which is true if data is nowhere in the backing chain.
> 
> 
> -- 
> Best regards,
> Vladimir

[-- Attachment #2: Type: text/html, Size: 9360 bytes --]

  reply	other threads:[~2021-06-11  9:06 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-07 20:22 [PATCH] qemu-{img,nbd}: Don't report zeroed cluster as a hole Nir Soffer
2021-06-07 21:22 ` Eric Blake
2021-06-07 22:04   ` Eric Blake
2021-06-08 16:38   ` Nir Soffer
2021-06-08 18:45     ` Eric Blake
2021-06-08 20:42       ` Nir Soffer
2021-06-10 18:34     ` Eric Blake
2021-06-10 20:09       ` Nir Soffer
2021-06-10 20:46         ` Eric Blake
2021-06-11  8:09           ` Kevin Wolf
2021-06-11  8:14             ` Vladimir Sementsov-Ogievskiy
2021-06-11  9:05               ` Nir Soffer [this message]
2021-06-11 11:14                 ` Vladimir Sementsov-Ogievskiy
2021-06-11 11:21               ` Kevin Wolf
2021-06-11 13:04                 ` Vladimir Sementsov-Ogievskiy
2021-06-11 13:31                 ` Eric Blake
2021-06-11 13:28             ` Eric Blake
2021-06-11 17:35               ` Nir Soffer
2021-06-11 18:34                 ` Eric Blake
2021-06-11 21:23                   ` Nir Soffer
2021-06-11 21:41                     ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DC0BA400-DC91-4450-9408-915B2152EFD5@gmail.com \
    --to=nirsof@gmail.com \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=nsoffer@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.