qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] block/cow : return real error code in cow.c


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH] block/cow : return real error code in cow.c
Date: Thu, 08 Dec 2011 12:14:38 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111115 Thunderbird/8.0

Am 08.12.2011 06:40, schrieb Li Zhi Hui:
> Signed-off-by: Li Zhi Hui <address@hidden>
> ---
>  block/cow.c |   22 ++++++++++++----------
>  1 files changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/block/cow.c b/block/cow.c
> index 3c52735..383482b 100644
> --- a/block/cow.c
> +++ b/block/cow.c
> @@ -64,10 +64,11 @@ static int cow_open(BlockDriverState *bs, int flags)
>      struct cow_header_v2 cow_header;
>      int bitmap_size;
>      int64_t size;
> +    int ret;
>  
>      /* see if it is a cow image */
> -    if (bdrv_pread(bs->file, 0, &cow_header, sizeof(cow_header)) !=
> -            sizeof(cow_header)) {
> +    ret = bdrv_pread(bs->file, 0, &cow_header, sizeof(cow_header));
> +    if (ret < 0) {
>          goto fail;
>      }
>  

More context:

    if (be32_to_cpu(cow_header.magic) != COW_MAGIC ||
        be32_to_cpu(cow_header.version) != COW_VERSION) {
        goto fail;
    }

This jumps to fail: with uninitialised ret. Needs to be fixed.

> @@ -88,7 +89,7 @@ static int cow_open(BlockDriverState *bs, int flags)
>      qemu_co_mutex_init(&s->lock);
>      return 0;
>   fail:
> -    return -1;
> +    return ret;
>  }
>  
>  /*
> @@ -182,14 +183,14 @@ static int coroutine_fn cow_read(BlockDriverState *bs, 
> int64_t sector_num,
>              ret = bdrv_pread(bs->file,
>                          s->cow_sectors_offset + sector_num * 512,
>                          buf, n * 512);
> -            if (ret != n * 512)
> -                return -1;
> +            if (ret < 0)
> +                return ret;

Please add braces here while touching the code.

>          } else {
>              if (bs->backing_hd) {
>                  /* read from the base image */
>                  ret = bdrv_read(bs->backing_hd, sector_num, buf, n);
>                  if (ret < 0)
> -                    return -1;
> +                    return ret;

And here.

Otherwise the patch looks good to me.

Kevin



reply via email to

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