From: Max Reitz <mreitz@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
Eric Blake <eblake@redhat.com>,
David Edmondson <david.edmondson@oracle.com>,
qemu-devel@nongnu.org
Cc: qemu-block@nongnu.org
Subject: Re: [PATCH v3 1/1] qemu-img: Add --target-is-zero to convert
Date: Fri, 7 Feb 2020 15:41:51 +0100 [thread overview]
Message-ID: <570489b5-8d1b-27c4-01d3-0e63130d2c57@redhat.com> (raw)
In-Reply-To: <f110458f-b3e7-6301-64bf-2b4957f3601e@virtuozzo.com>
[-- Attachment #1.1: Type: text/plain, Size: 2900 bytes --]
On 07.02.20 13:07, Vladimir Sementsov-Ogievskiy wrote:
> 07.02.2020 13:33, Max Reitz wrote:
>> On 04.02.20 15:23, Eric Blake wrote:
>>> On 2/4/20 7:59 AM, Vladimir Sementsov-Ogievskiy wrote:
>>>
>>>>> I understand that it is safer to have restrictions now and lift them
>>>>> later, than to allow use of the option at any time and leave room for
>>>>> the user to shoot themselves in the foot with no way to add safety
>>>>> later. The argument against no backing file is somewhat
>>>>> understandable (technically, as long as the backing file also reads
>>>>> as all zeroes, then the overall image reads as all zeroes - but why
>>>>> have a backing file that has no content?); the argument requiring -n
>>>>> is a bit weaker (if I'm creating an image, I _know_ it reads as all
>>>>> zeroes, so the --target-is-zero argument is redundant, but it
>>>>> shouldn't hurt to allow it).
>>>>
>>>> I know that it reads as all zeroes, only if this format provides zero
>>>> initialization..
>>>>
>>>>>
>>>>>> +++ b/qemu-img.c
>>>>>
>>>>>> @@ -2247,6 +2256,11 @@ static int img_convert(int argc, char **argv)
>>>>>> warn_report("This will become an error in future QEMU
>>>>>> versions.");
>>>>>> }
>>>>>> + if (s.has_zero_init && !skip_create) {
>>>>>> + error_report("--target-is-zero requires use of -n flag");
>>>>>> + goto fail_getopt;
>>>>>> + }
>>>>>
>>>>> So I think we could drop this hunk with no change in behavior.
>>>>
>>>> I think, no we can't. If we allow target-is-zero, with -n, we'd better
>>>> to check that what we are creating is zero-initialized (format has
>>>> zero-init), and if not we should report error.
>>>>
>>>
>>> Good call. Yes, if we allow --target-is-zero without -n, we MUST insist
>>> that bdrv_has_zero_init() returns 1 (or, after my followup series,
>>> bdrv_known_zeroes() includes BDRV_ZERO_CREATE).
>>
>> Why?
>>
>> I could imagine a user creating a qcow2 image on some block device with
>> preallocation where we cannot verify that the result will be zero. But
>> they want qemu not to zero the device, so they would specify
>> --target-is-zero.
>
> If user create image, setting --target-is-zero is always valid. But if
> we in
> same operation create the image automatically, having --target-is-zero,
> when
> we know that what we are creating is not zero is misleading and should
> fail..
bdrv_has_zero_init() doesn’t return false only for images that we know
are not zero. It returns true for images where we know they are. But
if we don’t know, then it returns false also.
> If we want to add a behavior to skip zeros unconditionally, we should
> call new
> option --skip-zeroes, to clearly specify what we want.
It was my impression that this was exactly what --target-is-zero means
and implies.
Max
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2020-02-07 15:00 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-04 9:52 [PATCH v3 0/1] qemu-img: Add --target-is-zero to indicate that a target is blank David Edmondson
2020-02-04 9:52 ` [PATCH v3 1/1] qemu-img: Add --target-is-zero to convert David Edmondson
2020-02-04 13:31 ` Eric Blake
2020-02-04 13:59 ` Vladimir Sementsov-Ogievskiy
2020-02-04 14:23 ` Eric Blake
2020-02-07 10:33 ` Max Reitz
2020-02-07 12:07 ` Vladimir Sementsov-Ogievskiy
2020-02-07 14:41 ` Max Reitz [this message]
2020-02-07 14:53 ` Vladimir Sementsov-Ogievskiy
2020-02-07 15:03 ` Max Reitz
2020-02-07 15:16 ` Vladimir Sementsov-Ogievskiy
2020-02-07 15:28 ` Max Reitz
2020-02-07 14:57 ` Eric Blake
2020-02-07 15:12 ` Max Reitz
2020-02-07 15:26 ` Vladimir Sementsov-Ogievskiy
2020-02-04 14:21 ` David Edmondson
2020-02-06 1:52 ` Eric Blake
2020-02-04 13:59 ` Vladimir Sementsov-Ogievskiy
2020-02-04 14:21 ` David Edmondson
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=570489b5-8d1b-27c4-01d3-0e63130d2c57@redhat.com \
--to=mreitz@redhat.com \
--cc=david.edmondson@oracle.com \
--cc=eblake@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).