All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>, qemu-block@nongnu.org
Cc: xuwei@redhat.com, qemu-devel@nongnu.org
Subject: Re: [PATCH 2/2] qemu-img convert: Unshare write permission for source
Date: Tue, 13 Apr 2021 08:43:35 -0500	[thread overview]
Message-ID: <5edcdaf9-2133-b426-82bb-8849264ff4fd@redhat.com> (raw)
In-Reply-To: <20210413132324.24043-3-kwolf@redhat.com>

On 4/13/21 8:23 AM, Kevin Wolf wrote:
> For a successful conversion of an image, we must make sure that its
> content doesn't change during the conversion.
> 
> A special case of this is using the same image file both as the source
> and as the destination. If both input and output format are raw, the
> operation would just be useless work, with other formats it is a sure
> way to destroy the image. This will now fail because the image file
> can't be opened a second time for the output when opening it for the
> input has already acquired file locks to unshare BLK_PERM_WRITE.
> 
> Nevertheless, if there is some reason in a special case why it is
> actually okay to allow writes to the image while it is being converted,
> -U can still be used to force sharing all permissions.
> 
> Note that for most image formats, BLK_PERM_WRITE would already be
> unshared by the format driver, so this only really makes a difference
> for raw source images (but any output format).
> 
> Reported-by: Xueqiang Wei <xuwei@redhat.com>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  qemu-img.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Eric Blake <eblake@redhat.com>

> 
> diff --git a/qemu-img.c b/qemu-img.c
> index babb5573ab..a5993682aa 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -2146,7 +2146,7 @@ static void set_rate_limit(BlockBackend *blk, int64_t rate_limit)
>  
>  static int img_convert(int argc, char **argv)
>  {
> -    int c, bs_i, flags, src_flags = 0;
> +    int c, bs_i, flags, src_flags = BDRV_O_NO_SHARE;
>      const char *fmt = NULL, *out_fmt = NULL, *cache = "unsafe",
>                 *src_cache = BDRV_DEFAULT_CACHE, *out_baseimg = NULL,
>                 *out_filename, *out_baseimg_param, *snapshot_name = NULL;
> 

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org



      reply	other threads:[~2021-04-13 13:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-13 13:23 [PATCH 0/2] qemu-img convert: Unshare write permission for source Kevin Wolf
2021-04-13 13:23 ` [PATCH 1/2] block: Add BDRV_O_NO_SHARE for blk_new_open() Kevin Wolf
2021-04-13 13:41   ` Eric Blake
2021-04-13 13:23 ` [PATCH 2/2] qemu-img convert: Unshare write permission for source Kevin Wolf
2021-04-13 13:43   ` Eric Blake [this message]

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=5edcdaf9-2133-b426-82bb-8849264ff4fd@redhat.com \
    --to=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=xuwei@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.