qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 07/10] block: Reuse fail path from bdrv_open()


From: Benoît Canet
Subject: Re: [Qemu-devel] [PATCH 07/10] block: Reuse fail path from bdrv_open()
Date: Mon, 27 Jan 2014 04:10:52 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

Le Sunday 26 Jan 2014 à 20:02:40 (+0100), Max Reitz a écrit :
> The fail paths of bdrv_file_open() and bdrv_open() naturally exhibit
> similarities, thus it is possible to reuse the one from bdrv_open() and
> shorten the one in bdrv_file_open() accordingly.
> 
> Signed-off-by: Max Reitz <address@hidden>
> ---
>  block.c | 17 +++++++----------
>  1 file changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/block.c b/block.c
> index 72eddd5..0f2cd3f 100644
> --- a/block.c
> +++ b/block.c
> @@ -1038,9 +1038,6 @@ static int bdrv_file_open(BlockDriverState *bs, const 
> char *filename,
>  
>  fail:
>      QDECREF(options);
> -    if (!bs->drv) {
> -        QDECREF(bs->options);
> -    }
>      return ret;
>  }
>  
> @@ -1240,17 +1237,17 @@ int bdrv_open(BlockDriverState **pbs, const char 
> *filename,
>      if (flags & BDRV_O_PROTOCOL) {
>          assert(!drv);
>          ret = bdrv_file_open(bs, filename, options, flags & ~BDRV_O_PROTOCOL,
> -                             errp);
> +                             &local_err);
> +        options = NULL;
>          if (ret) {
> -            if (*pbs) {
> -                bdrv_close(bs);
> +            if (bs->drv) {
> +                goto close_and_fail;
>              } else {
> -                bdrv_unref(bs);
> +                goto fail;
>              }
> -        } else {
> -            *pbs = bs;
>          }

Forget what I said about the goto chain in the previous mail.

But something like:

    if(!ret) {
        *pbs = bs;
        return 0;
    }
    if (bs->drv) {
        goto close_and_fail;
    }
    goto fail;

would keep the code in line.

Best regards

Benoît

> +        *pbs = bs;
> +        return 0;
>      }
>  
>      bs->options = options;
> -- 
> 1.8.5.3
> 
> 



reply via email to

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