qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] blockdev: Snapshotting must not open second ins


From: Jeff Cody
Subject: Re: [Qemu-devel] [PATCH] blockdev: Snapshotting must not open second instance of old top
Date: Wed, 2 Mar 2016 08:37:23 -0500
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Mar 02, 2016 at 12:27:01PM +0100, Kevin Wolf wrote:
> Calling bdrv_img_create() with a size of -1 means that it determines the
> size automatically by opening the backing file. However, in the case of
> live snapshots, the backing file is already opened and we must avoid
> opening the same image twice at the same time. Apart from that, just
> getting the size from the already existing BDS is a lot less overhead
> than opening a new instance.
> 
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
>  blockdev.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/blockdev.c b/blockdev.c
> index 151b800..3abfd0d 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -1739,10 +1739,15 @@ static void external_snapshot_prepare(BlkActionState 
> *common,
>          /* create new image w/backing file */
>          mode = s->has_mode ? s->mode : NEW_IMAGE_MODE_ABSOLUTE_PATHS;
>          if (mode != NEW_IMAGE_MODE_EXISTING) {
> +            int64_t size = bdrv_getlength(state->old_bs);
> +            if (size < 0) {
> +                error_setg_errno(errp, -size, "bdrv_getlength failed");
> +                return;
> +            }
>              bdrv_img_create(new_image_file, format,
>                              state->old_bs->filename,
>                              state->old_bs->drv->format_name,
> -                            NULL, -1, flags, &local_err, false);
> +                            NULL, size, flags, &local_err, false);
>              if (local_err) {
>                  error_propagate(errp, local_err);
>                  return;
> -- 
> 1.8.3.1
>

Reviewed-by: Jeff Cody <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]