All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>, qemu-devel@nongnu.org
Cc: amulya.lokesha@emc.com, jcody@redhat.com, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH] vhdx: Return true for bdrv_has_zero_init
Date: Fri, 05 Dec 2014 12:06:23 +0100	[thread overview]
Message-ID: <548191AF.3030905@redhat.com> (raw)
In-Reply-To: <1417775209-11812-1-git-send-email-kwolf@redhat.com>

On 2014-12-05 at 11:26, Kevin Wolf wrote:
> Like for most other image formats, vhdx images read as all zero in qemu
> after their creation (we're taking advantage from the fact that qemu has
> just created the image, because PAYLOAD_BLOCK_NOT_PRESENT actually means
> undefined rather than zeroed according to the spec).

I think whether qemu created the image doesn't matter. If it's 
undefined, it's completely valid for qemu to interpret it as zeroed.

So, as we discussed, the problem comes in when another program opens the 
image and actually interprets the data as something else than zero, 
which will be an issue if we used convert which then will have converted 
zeros from the input to basically random data (for qcow2 it will be zero 
again, but for other programs it might not be).

We could make block_state_zero=on non-optional, but that would mean we 
always would have to write the full BAT. Not so nice either. So what 
could probably solve the problem is a BDS-specific has_zero_init, which 
would be equal to the block_state_zero value here. But I'm not sure 
whether we want that either.

Max

> This fixes that 'qemu-img convert' to vhdx fully populates the image.
>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>   block/vhdx.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/block/vhdx.c b/block/vhdx.c
> index 12bfe75..8a54da0 100644
> --- a/block/vhdx.c
> +++ b/block/vhdx.c
> @@ -1951,6 +1951,7 @@ static BlockDriver bdrv_vhdx = {
>       .bdrv_co_readv          = vhdx_co_readv,
>       .bdrv_co_writev         = vhdx_co_writev,
>       .bdrv_create            = vhdx_create,
> +    .bdrv_has_zero_init     = bdrv_has_zero_init_1,
>       .bdrv_get_info          = vhdx_get_info,
>       .bdrv_check             = vhdx_check,

  reply	other threads:[~2014-12-05 11:06 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-05 10:26 [Qemu-devel] [PATCH] vhdx: Return true for bdrv_has_zero_init Kevin Wolf
2014-12-05 11:06 ` Max Reitz [this message]
2014-12-05 11:07 ` Kevin Wolf
2014-12-05 14:35   ` Jeff Cody
2014-12-05 11:49 ` Kevin Wolf
2014-12-05 14:34   ` Jeff Cody
2015-10-23 15:32 ` Stefan Hajnoczi
2015-10-23 16:00   ` Kevin Wolf
2015-10-26 10:43     ` Stefan Hajnoczi

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=548191AF.3030905@redhat.com \
    --to=mreitz@redhat.com \
    --cc=amulya.lokesha@emc.com \
    --cc=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.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.