Re: [Qemu-devel] [RFC v2 1/6] bdrv: Use "Error" for opening images

2013-09-06 Thread Kevin Wolf
Am 05.09.2013 um 15:55 hat Max Reitz geschrieben:
> Add an Error ** parameter to BlockDriver.bdrv_open and
> BlockDriver.bdrv_file_open to allow more specific error messages.
> 
> Signed-off-by: Max Reitz 

> diff --git a/block/iscsi.c b/block/iscsi.c
> index 2bbee1f..2464f19 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -1046,7 +1046,8 @@ static QemuOptsList runtime_opts = {
>   * We support iscsi url's on the form
>   * iscsi://[%@][:]//
>   */
> -static int iscsi_open(BlockDriverState *bs, QDict *options, int flags)
> +static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
> +  Error **errp)
>  {
>  IscsiLun *iscsilun = bs->opaque;
>  struct iscsi_context *iscsi = NULL;

block/iscsi.c: In function 'iscsi_create':
block/iscsi.c:1265:5: error: too few arguments to function 'iscsi_open'
block/iscsi.c:1049:12: note: declared here



Re: [Qemu-devel] [RFC v2 1/6] bdrv: Use "Error" for opening images

2013-09-06 Thread Kevin Wolf
Am 05.09.2013 um 15:55 hat Max Reitz geschrieben:
> Add an Error ** parameter to BlockDriver.bdrv_open and
> BlockDriver.bdrv_file_open to allow more specific error messages.
> 
> Signed-off-by: Max Reitz 

> diff --git a/block/raw_bsd.c b/block/raw_bsd.c
> index ab2b0fd..793121a 100644
> --- a/block/raw_bsd.c
> +++ b/block/raw_bsd.c
> @@ -130,12 +130,14 @@ static int raw_has_zero_init(BlockDriverState *bs)
>  return bdrv_has_zero_init(bs->file);
>  }
>  
> -static int raw_create(const char *filename, QEMUOptionParameter *options)
> +static int raw_create(const char *filename, QEMUOptionParameter *options,
> +  Error **errp)
>  {
>  return bdrv_create_file(filename, options);
>  }
>  
> -static int raw_open(BlockDriverState *bs, QDict *options, int flags)
> +static int raw_open(BlockDriverState *bs, QDict *options, int flags,
> +Error **errp)
>  {
>  bs->sg = bs->file->sg;
>  return 0;

raw_create() shouldn't be converted in this patch, this causes a build
failure.

Kevin



[Qemu-devel] [RFC v2 1/6] bdrv: Use "Error" for opening images

2013-09-05 Thread Max Reitz
Add an Error ** parameter to BlockDriver.bdrv_open and
BlockDriver.bdrv_file_open to allow more specific error messages.

Signed-off-by: Max Reitz 
---
 block.c   |  4 ++--
 block/blkdebug.c  |  3 ++-
 block/blkverify.c |  3 ++-
 block/bochs.c |  3 ++-
 block/cloop.c |  3 ++-
 block/cow.c   |  3 ++-
 block/curl.c  |  3 ++-
 block/dmg.c   |  3 ++-
 block/gluster.c   |  2 +-
 block/iscsi.c |  3 ++-
 block/nbd.c   |  3 ++-
 block/parallels.c |  3 ++-
 block/qcow.c  |  3 ++-
 block/qcow2.c |  5 +++--
 block/qed.c   |  5 +++--
 block/raw-posix.c | 12 
 block/raw-win32.c |  6 --
 block/raw_bsd.c   |  6 --
 block/rbd.c   |  3 ++-
 block/sheepdog.c  |  3 ++-
 block/snapshot.c  |  2 +-
 block/ssh.c   |  3 ++-
 block/vdi.c   |  3 ++-
 block/vhdx.c  |  3 ++-
 block/vmdk.c  |  3 ++-
 block/vpc.c   |  3 ++-
 block/vvfat.c |  3 ++-
 include/block/block_int.h |  6 --
 28 files changed, 68 insertions(+), 37 deletions(-)

diff --git a/block.c b/block.c
index 26639e8..c9cb371 100644
--- a/block.c
+++ b/block.c
@@ -734,7 +734,7 @@ static int bdrv_open_common(BlockDriverState *bs, 
BlockDriverState *file,
 if (drv->bdrv_file_open) {
 assert(file == NULL);
 assert(drv->bdrv_parse_filename || filename != NULL);
-ret = drv->bdrv_file_open(bs, options, open_flags);
+ret = drv->bdrv_file_open(bs, options, open_flags, NULL);
 } else {
 if (file == NULL) {
 qerror_report(ERROR_CLASS_GENERIC_ERROR, "Can't use '%s' as a "
@@ -744,7 +744,7 @@ static int bdrv_open_common(BlockDriverState *bs, 
BlockDriverState *file,
 goto free_and_fail;
 }
 bs->file = file;
-ret = drv->bdrv_open(bs, options, open_flags);
+ret = drv->bdrv_open(bs, options, open_flags, NULL);
 }
 
 if (ret < 0) {
diff --git a/block/blkdebug.c b/block/blkdebug.c
index 5d33e03..52d65ff 100644
--- a/block/blkdebug.c
+++ b/block/blkdebug.c
@@ -350,7 +350,8 @@ static QemuOptsList runtime_opts = {
 },
 };
 
-static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags)
+static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags,
+ Error **errp)
 {
 BDRVBlkdebugState *s = bs->opaque;
 QemuOpts *opts;
diff --git a/block/blkverify.c b/block/blkverify.c
index 1d58cc3..5d716bb 100644
--- a/block/blkverify.c
+++ b/block/blkverify.c
@@ -116,7 +116,8 @@ static QemuOptsList runtime_opts = {
 },
 };
 
-static int blkverify_open(BlockDriverState *bs, QDict *options, int flags)
+static int blkverify_open(BlockDriverState *bs, QDict *options, int flags,
+  Error **errp)
 {
 BDRVBlkverifyState *s = bs->opaque;
 QemuOpts *opts;
diff --git a/block/bochs.c b/block/bochs.c
index d7078c0..51d9a90 100644
--- a/block/bochs.c
+++ b/block/bochs.c
@@ -108,7 +108,8 @@ static int bochs_probe(const uint8_t *buf, int buf_size, 
const char *filename)
 return 0;
 }
 
-static int bochs_open(BlockDriverState *bs, QDict *options, int flags)
+static int bochs_open(BlockDriverState *bs, QDict *options, int flags,
+  Error **errp)
 {
 BDRVBochsState *s = bs->opaque;
 int i;
diff --git a/block/cloop.c b/block/cloop.c
index 6ea7cf4..b907023 100644
--- a/block/cloop.c
+++ b/block/cloop.c
@@ -53,7 +53,8 @@ static int cloop_probe(const uint8_t *buf, int buf_size, 
const char *filename)
 return 0;
 }
 
-static int cloop_open(BlockDriverState *bs, QDict *options, int flags)
+static int cloop_open(BlockDriverState *bs, QDict *options, int flags,
+  Error **errp)
 {
 BDRVCloopState *s = bs->opaque;
 uint32_t offsets_size, max_compressed_block_size = 1, i;
diff --git a/block/cow.c b/block/cow.c
index 1cc2e89..4961ca0 100644
--- a/block/cow.c
+++ b/block/cow.c
@@ -58,7 +58,8 @@ static int cow_probe(const uint8_t *buf, int buf_size, const 
char *filename)
 return 0;
 }
 
-static int cow_open(BlockDriverState *bs, QDict *options, int flags)
+static int cow_open(BlockDriverState *bs, QDict *options, int flags,
+Error **errp)
 {
 BDRVCowState *s = bs->opaque;
 struct cow_header_v2 cow_header;
diff --git a/block/curl.c b/block/curl.c
index ca2cedc..5a46f97 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -395,7 +395,8 @@ static QemuOptsList runtime_opts = {
 },
 };
 
-static int curl_open(BlockDriverState *bs, QDict *options, int flags)
+static int curl_open(BlockDriverState *bs, QDict *options, int flags,
+ Error **errp)
 {
 BDRVCURLState *s = bs->opaque;
 CURLState *state = NULL;
diff --git a/block/dmg.c b/block/dmg.c
index 3141cb5..d5e9b1f 100644
--- a/block/dmg.c
+++ b/block/dmg.