qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 17/20] vmdk: do not try opening a file as both i


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH 17/20] vmdk: do not try opening a file as both image and descriptor
Date: Mon, 10 Feb 2014 16:40:12 +0800
User-agent: Mutt/1.5.22 (2013-10-16)

On Sun, 02/09 10:48, Paolo Bonzini wrote:
> This prepares for propagating errors from vmdk_open_sparse and
> vmdk_open_desc_file up to the caller of vmdk_open.
> 
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
>  block/vmdk.c               | 22 +++++++++++++++-------
>  tests/qemu-iotests/059.out |  4 ++--
>  2 files changed, 17 insertions(+), 9 deletions(-)
> 
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 74a0bac..750e632 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -883,20 +883,28 @@ static int vmdk_open(BlockDriverState *bs, QDict 
> *options, int flags,
>      char *buf = NULL;
>      int ret;
>      BDRVVmdkState *s = bs->opaque;
> +    uint32_t magic;
>  
>      buf = vmdk_read_desc(bs->file, 0, errp);
>      if (!buf) {
>          return -EINVAL;
>      }
>  
> -    if (vmdk_open_sparse(bs, bs->file, flags, buf, errp) == 0) {
> -        s->desc_offset = 0x200;
> -    } else {
> -        ret = vmdk_open_desc_file(bs, flags, buf, errp);
> -        if (ret) {
> -            goto fail;
> -        }
> +    magic = ldl_be_p(buf);
> +    switch (magic) {
> +        case VMDK3_MAGIC:
> +        case VMDK4_MAGIC:
> +            ret = vmdk_open_sparse(bs, bs->file, flags, buf, errp);
> +            s->desc_offset = 0x200;
> +            break;
> +        default:
> +            ret = vmdk_open_desc_file(bs, flags, buf, errp);
> +            break;
>      }
> +    if (ret) {
> +        goto fail;
> +    }
> +
>      /* try to open parent images, if exist */
>      ret = vmdk_parent_open(bs);
>      if (ret) {
> diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out
> index 4ffeb54..4600670 100644
> --- a/tests/qemu-iotests/059.out
> +++ b/tests/qemu-iotests/059.out
> @@ -8,7 +8,7 @@ no file open, try 'help open'
>  === Testing too big L2 table size ===
>  Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
>  L2 table size too big
> -qemu-io: can't open device TEST_DIR/t.vmdk: Could not open 
> 'TEST_DIR/t.vmdk': Wrong medium type
> +qemu-io: can't open device TEST_DIR/t.vmdk: Could not open 
> 'TEST_DIR/t.vmdk': Invalid argument
>  no file open, try 'help open'
>  
>  === Testing too big L1 table size ===
> @@ -2046,7 +2046,7 @@ RW 12582912 VMFS "dummy.IMGFMT" 1
>  === Testing truncated sparse ===
>  Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=107374182400
>  qemu-img: File truncated, expecting at least 13172736 bytes
> -qemu-img: Could not open 'TEST_DIR/t.IMGFMT': Could not open 
> 'TEST_DIR/t.IMGFMT': Wrong medium type
> +qemu-img: Could not open 'TEST_DIR/t.IMGFMT': Could not open 
> 'TEST_DIR/t.IMGFMT': Invalid argument
>  
>  === Testing version 3 ===
>  image: TEST_DIR/iotest-version3.IMGFMT
> -- 
> 1.8.5.3
> 
> 
> 
Reviewed-by: Fam Zheng <address@hidden>



reply via email to

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