diff mbox

[18/20] vmdk: correctly propagate errors

Message ID 1391939335-31580-19-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini Feb. 9, 2014, 9:48 a.m. UTC
Now that we can return the "right" errors, use the Error** parameter
to pass them back instead of just printing them.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/vmdk.c               | 11 ++++++-----
 tests/qemu-iotests/059.out |  6 ++----
 2 files changed, 8 insertions(+), 9 deletions(-)

Comments

Fam Zheng Feb. 10, 2014, 8:41 a.m. UTC | #1
On Sun, 02/09 10:48, Paolo Bonzini wrote:
> Now that we can return the "right" errors, use the Error** parameter
> to pass them back instead of just printing them.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  block/vmdk.c               | 11 ++++++-----
>  tests/qemu-iotests/059.out |  6 ++----
>  2 files changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 750e632..f148164 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -571,6 +571,7 @@ static int vmdk_open_vmdk4(BlockDriverState *bs,
>          error_setg_errno(errp, -ret,
>                           "Could not read header from file '%s'",
>                           file->filename);
> +        return -EINVAL;
>      }
>      if (header.capacity == 0) {
>          uint64_t desc_offset = le64_to_cpu(header.desc_offset);
> @@ -640,8 +641,8 @@ static int vmdk_open_vmdk4(BlockDriverState *bs,
>          char buf[64];
>          snprintf(buf, sizeof(buf), "VMDK version %d",
>                   le32_to_cpu(header.version));
> -        qerror_report(QERR_UNKNOWN_BLOCK_FORMAT_FEATURE,
> -                bs->device_name, "vmdk", buf);
> +        error_set(errp, QERR_UNKNOWN_BLOCK_FORMAT_FEATURE,
> +                  bs->device_name, "vmdk", buf);
>          return -ENOTSUP;
>      } else if (le32_to_cpu(header.version) == 3 && (flags & BDRV_O_RDWR)) {
>          /* VMware KB 2064959 explains that version 3 added support for
> @@ -653,7 +654,7 @@ static int vmdk_open_vmdk4(BlockDriverState *bs,
>      }
>  
>      if (le32_to_cpu(header.num_gtes_per_gt) > 512) {
> -        error_report("L2 table size too big");
> +        error_setg(errp, "L2 table size too big");
>          return -EINVAL;
>      }
>  
> @@ -669,8 +670,8 @@ static int vmdk_open_vmdk4(BlockDriverState *bs,
>      }
>      if (bdrv_getlength(file) <
>              le64_to_cpu(header.grain_offset) * BDRV_SECTOR_SIZE) {
> -        error_report("File truncated, expecting at least %lld bytes",
> -                le64_to_cpu(header.grain_offset) * BDRV_SECTOR_SIZE);
> +        error_setg(errp, "File truncated, expecting at least %lld bytes",
> +                   le64_to_cpu(header.grain_offset) * BDRV_SECTOR_SIZE);
>          return -EINVAL;
>      }
>  
> diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out
> index 4600670..3371c86 100644
> --- a/tests/qemu-iotests/059.out
> +++ b/tests/qemu-iotests/059.out
> @@ -7,8 +7,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': Invalid argument
> +qemu-io: can't open device TEST_DIR/t.vmdk: L2 table size too big
>  no file open, try 'help open'
>  
>  === Testing too big L1 table size ===
> @@ -2045,8 +2044,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': Invalid argument
> +qemu-img: Could not open 'TEST_DIR/t.IMGFMT': File truncated, expecting at least 13172736 bytes
>  
>  === Testing version 3 ===
>  image: TEST_DIR/iotest-version3.IMGFMT
> -- 
> 1.8.5.3
> 
> 
> 

Reviewed-by: Fam Zheng <famz@redhat.com>
diff mbox

Patch

diff --git a/block/vmdk.c b/block/vmdk.c
index 750e632..f148164 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -571,6 +571,7 @@  static int vmdk_open_vmdk4(BlockDriverState *bs,
         error_setg_errno(errp, -ret,
                          "Could not read header from file '%s'",
                          file->filename);
+        return -EINVAL;
     }
     if (header.capacity == 0) {
         uint64_t desc_offset = le64_to_cpu(header.desc_offset);
@@ -640,8 +641,8 @@  static int vmdk_open_vmdk4(BlockDriverState *bs,
         char buf[64];
         snprintf(buf, sizeof(buf), "VMDK version %d",
                  le32_to_cpu(header.version));
-        qerror_report(QERR_UNKNOWN_BLOCK_FORMAT_FEATURE,
-                bs->device_name, "vmdk", buf);
+        error_set(errp, QERR_UNKNOWN_BLOCK_FORMAT_FEATURE,
+                  bs->device_name, "vmdk", buf);
         return -ENOTSUP;
     } else if (le32_to_cpu(header.version) == 3 && (flags & BDRV_O_RDWR)) {
         /* VMware KB 2064959 explains that version 3 added support for
@@ -653,7 +654,7 @@  static int vmdk_open_vmdk4(BlockDriverState *bs,
     }
 
     if (le32_to_cpu(header.num_gtes_per_gt) > 512) {
-        error_report("L2 table size too big");
+        error_setg(errp, "L2 table size too big");
         return -EINVAL;
     }
 
@@ -669,8 +670,8 @@  static int vmdk_open_vmdk4(BlockDriverState *bs,
     }
     if (bdrv_getlength(file) <
             le64_to_cpu(header.grain_offset) * BDRV_SECTOR_SIZE) {
-        error_report("File truncated, expecting at least %lld bytes",
-                le64_to_cpu(header.grain_offset) * BDRV_SECTOR_SIZE);
+        error_setg(errp, "File truncated, expecting at least %lld bytes",
+                   le64_to_cpu(header.grain_offset) * BDRV_SECTOR_SIZE);
         return -EINVAL;
     }
 
diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out
index 4600670..3371c86 100644
--- a/tests/qemu-iotests/059.out
+++ b/tests/qemu-iotests/059.out
@@ -7,8 +7,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': Invalid argument
+qemu-io: can't open device TEST_DIR/t.vmdk: L2 table size too big
 no file open, try 'help open'
 
 === Testing too big L1 table size ===
@@ -2045,8 +2044,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': Invalid argument
+qemu-img: Could not open 'TEST_DIR/t.IMGFMT': File truncated, expecting at least 13172736 bytes
 
 === Testing version 3 ===
 image: TEST_DIR/iotest-version3.IMGFMT