[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 2/5] block: Use error code EMEDIUMTYPE for wr
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v2 2/5] block: Use error code EMEDIUMTYPE for wrong format in some block drivers |
Date: |
Fri, 18 Jan 2013 09:53:50 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
Stefan Weil <address@hidden> writes:
> This improves error reports for bochs, cow, qcow, qcow2, qed and vmdk
> when a file with the wrong format is selected.
>
> Signed-off-by: Stefan Weil <address@hidden>
> ---
> block/bochs.c | 2 +-
> block/cow.c | 2 +-
> block/qcow.c | 2 +-
> block/qcow2.c | 2 +-
> block/qed.c | 2 +-
> block/vmdk.c | 4 ++--
> 6 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/block/bochs.c b/block/bochs.c
> index 1b1d9cd..3737583 100644
> --- a/block/bochs.c
> +++ b/block/bochs.c
> @@ -126,7 +126,7 @@ static int bochs_open(BlockDriverState *bs, int flags)
> strcmp(bochs.subtype, GROWING_TYPE) ||
> ((le32_to_cpu(bochs.version) != HEADER_VERSION) &&
> (le32_to_cpu(bochs.version) != HEADER_V1))) {
> - goto fail;
> + return -EMEDIUMTYPE;
> }
>
> if (le32_to_cpu(bochs.version) == HEADER_V1) {
You make the function return either 0, -1 or -EMEDIUMTYPE. Please make
it return either 0 or a negative errno code, like this (untested):
diff --git a/block/bochs.c b/block/bochs.c
index 1b1d9cd..a9eb338 100644
--- a/block/bochs.c
+++ b/block/bochs.c
@@ -111,14 +111,15 @@ static int bochs_probe(const uint8_t *buf, int buf_size,
const char *filename)
static int bochs_open(BlockDriverState *bs, int flags)
{
BDRVBochsState *s = bs->opaque;
- int i;
+ int ret, i;
struct bochs_header bochs;
struct bochs_header_v1 header_v1;
bs->read_only = 1; // no write support yet
- if (bdrv_pread(bs->file, 0, &bochs, sizeof(bochs)) != sizeof(bochs)) {
- goto fail;
+ ret = bdrv_pread(bs->file, 0, &bochs, sizeof(bochs));
+ if (ret < 0) {
+ return ret;
}
if (strcmp(bochs.magic, HEADER_MAGIC) ||
@@ -126,7 +127,7 @@ static int bochs_open(BlockDriverState *bs, int flags)
strcmp(bochs.subtype, GROWING_TYPE) ||
((le32_to_cpu(bochs.version) != HEADER_VERSION) &&
(le32_to_cpu(bochs.version) != HEADER_V1))) {
- goto fail;
+ return -EMEDIUMTYPE;
}
if (le32_to_cpu(bochs.version) == HEADER_V1) {
@@ -138,9 +139,11 @@ static int bochs_open(BlockDriverState *bs, int flags)
s->catalog_size = le32_to_cpu(bochs.extra.redolog.catalog);
s->catalog_bitmap = g_malloc(s->catalog_size * 4);
- if (bdrv_pread(bs->file, le32_to_cpu(bochs.header), s->catalog_bitmap,
- s->catalog_size * 4) != s->catalog_size * 4)
- goto fail;
+ ret = bdrv_pread(bs->file, le32_to_cpu(bochs.header), s->catalog_bitmap,
+ s->catalog_size * 4);
+ if (ret < 0) {
+ return ret;
+ }
for (i = 0; i < s->catalog_size; i++)
le32_to_cpus(&s->catalog_bitmap[i]);
@@ -153,8 +156,6 @@ static int bochs_open(BlockDriverState *bs, int flags)
qemu_co_mutex_init(&s->lock);
return 0;
- fail:
- return -1;
}
static int64_t seek_to_sector(BlockDriverState *bs, int64_t sector_num)
Same for all the other bdrv_open() methods.
- [Qemu-devel] [PATCH v2 0/5] block: Fix error report for wrong file format, Stefan Weil, 2013/01/17
- [Qemu-devel] [PATCH v2 1/5] block: Add special error code for wrong format, Stefan Weil, 2013/01/17
- [Qemu-devel] [PATCH v2 3/5] block/vdi: Improve debug output for signature, Stefan Weil, 2013/01/17
- [Qemu-devel] [PATCH v2 5/5] block/vdi: Check for bad signature, Stefan Weil, 2013/01/17
- [Qemu-devel] [PATCH v2 4/5] block/vdi: Improved return values from vdi_open, Stefan Weil, 2013/01/17
- [Qemu-devel] [PATCH v2 2/5] block: Use error code EMEDIUMTYPE for wrong format in some block drivers, Stefan Weil, 2013/01/17
- Re: [Qemu-devel] [PATCH v2 2/5] block: Use error code EMEDIUMTYPE for wrong format in some block drivers,
Markus Armbruster <=
Re: [Qemu-devel] [PATCH v2 0/5] block: Fix error report for wrong file format, Eric Blake, 2013/01/17
Re: [Qemu-devel] [PATCH v2 0/5] block: Fix error report for wrong file format, Kevin Wolf, 2013/01/22