From: Eric Blake <eblake@redhat.com>
To: "Benoît Canet" <benoit.canet@irqsave.net>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com,
mreitz@redhat.com
Subject: Re: [Qemu-devel] [PATCH V19 06/12] quorum: Add quorum mechanism.
Date: Fri, 21 Feb 2014 15:41:28 -0700 [thread overview]
Message-ID: <5307D618.4090408@redhat.com> (raw)
In-Reply-To: <20140221223045.GB13076@irqsave.net>
[-- Attachment #1: Type: text/plain, Size: 1872 bytes --]
On 02/21/2014 03:30 PM, Benoît Canet wrote:
>>> +
>>> +- "ret": The IO return code.
>>
>> What values is this likely to contain? Is it a finite set, in which
>> case it would be nice to have a QAPI enum that describes the set of
>> return codes, rather than a raw number?
>
> It's anything that the block stack could return as an error.
Yes, but returning a raw integer is not friendly. What do those
integers mean? In this patch, I found only two callers that set this
parameter:
quorum_report_bad_versions:
+ quorum_report_bad(acb, s->bs[item->index]->node_name, 0);
So the code means nothing there, because you always pass 0.
quroum_aio_cb:
if (ret == 0) {
acb->success_count++;
+ } else {
+ quorum_report_bad(acb, sacb->aiocb->bs->node_name, ret);
Here, ret is non-zero - but will it ever be anything other than -1?
Seriously, I think you should change this to NOT be an integer, but
instead be an enum value where the enum is tracked in qapi-schema.json.
Change the signature of quorum_report_bad to take the enum value,
rather than a raw int. And over the wire, the QMP event will appear
with a string encoding of the enum name, where we can add named errors
to the enum type as we come up with what different error codes we want
to distinguish. I'm opposed to the current nebulous "it's whatever the
block stack wanted to report" without knowing what it means. If you
can't switch to an enum, it may be better to just delete the field
entirely, if you can't justify what it is doing. QMP-wise, we can
always add more information later, but once the release happens, we
can't take away information, even if later refactoring makes it harder
to support.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2014-02-21 22:41 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-21 21:21 [Qemu-devel] [PATCH V19 00/12] Quorum block filter Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 01/12] quorum: Create quorum.c, add QuorumChildRequest and QuorumAIOCB Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 02/12] quorum: Create BDRVQuorumState and BlkDriver and do init Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 03/12] quorum: Add quorum_aio_writev and its dependencies Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 04/12] blkverify: Extract qemu_iovec_clone() and qemu_iovec_compare() from blkverify Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 05/12] quorum: Add quorum_aio_readv Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 06/12] quorum: Add quorum mechanism Benoît Canet
2014-02-21 22:09 ` Eric Blake
2014-02-21 22:30 ` Benoît Canet
2014-02-21 22:38 ` Kevin Wolf
2014-02-21 22:44 ` Eric Blake
2014-02-21 22:50 ` Benoît Canet
2014-02-21 23:32 ` Eric Blake
2014-02-21 22:41 ` Eric Blake [this message]
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 07/12] quorum: Add quorum_getlength() Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 08/12] quorum: Add quorum_invalidate_cache() Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 09/12] quorum: Add quorum_co_flush() Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 10/12] quorum: Implement recursive .bdrv_recurse_is_first_non_filter in quorum Benoît Canet
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 11/12] quorum: Add quorum_open() and quorum_close() Benoît Canet
2014-02-21 21:57 ` Eric Blake
2014-02-21 21:21 ` [Qemu-devel] [PATCH V19 12/12] quorum: Add unit test Benoît Canet
2014-02-21 21:39 ` [Qemu-devel] [PATCH V19 00/12] Quorum block filter Kevin Wolf
2014-02-21 22:49 ` Eric Blake
2014-02-21 22:58 ` Benoît Canet
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=5307D618.4090408@redhat.com \
--to=eblake@redhat.com \
--cc=benoit.canet@irqsave.net \
--cc=kwolf@redhat.com \
--cc=mreitz@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).