All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: Fam Zheng <famz@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 1/7] blkdebug: Use errp for read_config()
Date: Mon, 25 Nov 2013 20:42:56 +0100	[thread overview]
Message-ID: <5293A840.60002@redhat.com> (raw)
In-Reply-To: <20131125134032.GI3009@dhcp-200-207.str.redhat.com>

On 25.11.2013 14:40, Kevin Wolf wrote:
> Am 22.11.2013 um 17:10 hat Max Reitz geschrieben:
>> Use an Error variable in the read_config() function.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>   block/blkdebug.c | 12 ++++++++----
>>   1 file changed, 8 insertions(+), 4 deletions(-)
>>
>> diff --git a/block/blkdebug.c b/block/blkdebug.c
>> index 16d2b91..9dfa712 100644
>> --- a/block/blkdebug.c
>> +++ b/block/blkdebug.c
>> @@ -271,7 +271,7 @@ static void remove_rule(BlkdebugRule *rule)
>>       g_free(rule);
>>   }
>>   
>> -static int read_config(BDRVBlkdebugState *s, const char *filename)
>> +static int read_config(BDRVBlkdebugState *s, const char *filename, Error **errp)
> For a complete conversion, this should become a void function.

I wanted to do this at first, but blkdebug_open needs to return -errno 
again; in the hunk below, -errno from fopen is returned. We could just 
return some dummy value in blkdebug_open again, but I thought it better 
to pass the correct value.

>>   {
>>       FILE *f;
>>       int ret;
>> @@ -279,11 +279,16 @@ static int read_config(BDRVBlkdebugState *s, const char *filename)
>>   
>>       f = fopen(filename, "r");
>>       if (f == NULL) {
>> +        error_setg_errno(errp, errno, "Could not read blkdebug config file "
>> +                         "'%s'", filename);
>>           return -errno;
>>       }
>>   
>>       ret = qemu_config_parse(f, config_groups, filename);
>>       if (ret < 0) {
>> +        error_setg(errp, "Could not parse blkdebug config file '%s'",
>> +                   filename);
>> +        ret = -EINVAL;
>>           goto fail;
>>       }
> Any reason for adding the file name here without mentioning it in the
> commit message?

No, not really. I don't know why I added this, the original 
error_setg_errno() in blkdebug_open didn't have it, so…

> I'm not completely sure here, but the information is probably redundant;
> the caller already knows what the config file was. On the command line,
> this will lead to error messages such as:
>
> qemu: -drive file=blkdebug:/path/to/blkdebug.cfg:foo.qcow2: Could not
> read blkdebug config file '/path/to/blkdebug.cfg': No such file or
> directory

Personally, I like such redundant information, but I guess I still need 
to learn that qemu sometimes differs from my preferences. ;-)

>> @@ -370,9 +375,8 @@ static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags,
>>       /* Read rules from config file */
>>       config = qemu_opt_get(opts, "config");
>>       if (config) {
>> -        ret = read_config(s, config);
>> -        if (ret < 0) {
>> -            error_setg_errno(errp, -ret, "Could not read blkdebug config file");
>> +        ret = read_config(s, config, errp);
>> +        if (ret) {
>>               goto fail;
>>           }
>>       }
> Hm, I see. You actually need to return -errno for bdrv_open(). Then
> let's just check if we really want to add the file name in the message.

If you don't see the point, I do not either. The original 
error_setg_errno() didn't have it, so we should leave it that way.

Max

  reply	other threads:[~2013-11-25 19:42 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-22 16:10 [Qemu-devel] [PATCH v2 0/7] blkdebug/blkverify: Allow command-line configuration Max Reitz
2013-11-22 16:10 ` [Qemu-devel] [PATCH v2 1/7] blkdebug: Use errp for read_config() Max Reitz
2013-11-25 13:40   ` Kevin Wolf
2013-11-25 19:42     ` Max Reitz [this message]
2013-11-22 16:10 ` [Qemu-devel] [PATCH v2 2/7] blkdebug: Don't require sophisticated filename Max Reitz
2013-11-22 16:10 ` [Qemu-devel] [PATCH v2 3/7] qdict: Add qdict_array_split() Max Reitz
2013-11-22 16:10 ` [Qemu-devel] [PATCH v2 4/7] qemu-option: Add qemu_config_parse_qdict() Max Reitz
2013-11-22 16:10 ` [Qemu-devel] [PATCH v2 5/7] blkdebug: Always call read_config() Max Reitz
2013-11-22 16:10 ` [Qemu-devel] [PATCH v2 6/7] blkdebug: Use command-line in read_config() Max Reitz
2013-11-22 16:10 ` [Qemu-devel] [PATCH v2 7/7] blkverify: Don't require protocol filename Max Reitz
2013-11-25 14:40   ` Kevin Wolf
2013-11-25 20:09     ` Max Reitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5293A840.60002@redhat.com \
    --to=mreitz@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.