From: Kevin Wolf <kwolf@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, anthony@codemonkey.ws
Subject: Re: [Qemu-devel] [PULL 36/42] qapi: QMP interface for blkdebug and blkverify
Date: Thu, 16 Jan 2014 11:03:26 +0100 [thread overview]
Message-ID: <20140116100326.GC3369@dhcp-200-207.str.redhat.com> (raw)
In-Reply-To: <52D6A6E5.8080407@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 5530 bytes --]
Am 15.01.2014 um 16:19 hat Eric Blake geschrieben:
> On 01/15/2014 03:22 AM, Kevin Wolf wrote:
> > From: Max Reitz <mreitz@redhat.com>
> >
> > Add structures to support blkdebug and blkverify in blockdev-add.
> >
> > Signed-off-by: Max Reitz <mreitz@redhat.com>
> > Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> > ---
> > qapi-schema.json | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 109 insertions(+), 4 deletions(-)
>
> Sorry for not noticing this sooner, but we still have some interface
> problems that need to be ironed out.
Nothing that should hold up this pull request, there are just a few
improvements that can be done in a follow-up.
> > diff --git a/qapi-schema.json b/qapi-schema.json
> > index f27c48a..35f7b34 100644
> > --- a/qapi-schema.json
> > +++ b/qapi-schema.json
> > @@ -4201,6 +4201,113 @@
> > '*pass-discard-other': 'bool' } }
> >
> > ##
> > +# @BlkdebugEvent
> > +#
> > +# Trigger events supported by blkdebug.
> > +##
> > +{ 'enum': 'BlkdebugEvent',
>
> Missing a 'Since: 2.0' designation; would be worth adding that in a
> followup patch.
Ack.
> > + 'data': [ 'l1_update', 'l1_grow.alloc_table', 'l1_grow.write_table',
> > + 'l1_grow.activate_table', 'l2_load', 'l2_update',
> > + 'l2_update_compressed', 'l2_alloc.cow_read', 'l2_alloc.write',
> > + 'read_aio', 'read_backing_aio', 'read_compressed', 'write_aio',
> > + 'write_compressed', 'vmstate_load', 'vmstate_save', 'cow_read',
> > + 'cow_write', 'reftable_load', 'reftable_grow', 'reftable_update',
> > + 'refblock_load', 'refblock_update', 'refblock_update_part',
> > + 'refblock_alloc', 'refblock_alloc.hookup', 'refblock_alloc.write',
> > + 'refblock_alloc.write_blocks', 'refblock_alloc.write_table',
> > + 'refblock_alloc.switch_table', 'cluster_alloc',
> > + 'cluster_alloc_bytes', 'cluster_free', 'flush_to_os',
> > + 'flush_to_disk' ] }
>
> Do we want to prefer '-' over '_' in all these names?
These are existing names from the blkdebug configuration file. If we
wanted to have '-' in QMP and '_' in the config file, we'd have to have
some conversion somewhere. Uglier than having underscores here, imho.
> > +
> > +##
> > +# @BlkdebugInjectErrorOptions
> > +#
> > +# Describes a single error injection for blkdebug.
> > +#
> > +# @event: trigger event
> > +#
> > +# @state: #optional the state identifier blkdebug needs to be in to
> > +# actually trigger the event; defaults to "any"
>
> This sounds like it is a finite set of states, and therefore should be
> an enum rather than an 'int'.
No, these are user-defined states.
> > +#
> > +# @errno: #optional error identifier (errno) to be returned; defaults to
> > +# EIO
>
> errno is not a portable. The values of errno on one machine may not
> match the values of errno on the other machine using the QMP connection
> via a remote socket. It might be cleaner to have an enum of named error
> values, rather than integer errno values.
That's true. On the other hand this is only blkdebug, which is used for
testing and debugging and nothing else. I know what the errno values are
on my machine, so in practice this is good enough for me.
If someone feels bored and wants to clean it up later, be my guest, but
as far as I am concerned, in this specific place it's a non-problem.
> > +#
> > +# @sector: #optional specifies the sector index which has to be affected
> > +# in order to actually trigger the event; defaults to "any
> > +# sector"
> > +#
> > +# @once: #optional disables further events after this one has been
> > +# triggered; defaults to false
> > +#
> > +# @immediately: #optional fail immediately; defaults to false
> > +#
> > +# Since: 2.0
> > +##
> > +{ 'type': 'BlkdebugInjectErrorOptions',
> > + 'data': { 'event': 'BlkdebugEvent',
> > + '*state': 'int',
> > + '*errno': 'int',
> > + '*sector': 'int',
> > + '*once': 'bool',
> > + '*immediately': 'bool' } }
> > +
> > +##
> > +# @BlkdebugSetStateOptions
> > +#
> > +# Describes a single state-change event for blkdebug.
> > +#
> > +# @event: trigger event
> > +#
> > +# @state: #optional the current state identifier blkdebug needs to be in;
> > +# defaults to "any"
> > +#
>
> Again, this should be an enum, not an int.
See above.
> > +# @new_state: the state identifier blkdebug is supposed to assume if
> > +# this event is triggered
>
> s/new_state/new-state/
Again, existing blkdebug config stuff.
> > @@ -4224,10 +4331,8 @@
> > # TODO sheepdog: Wait for structured options
> > # TODO ssh: Should take InetSocketAddress for 'host'?
> > 'vvfat': 'BlockdevOptionsVVFAT',
> > -
> > -# TODO blkdebug: Wait for structured options
> > -# TODO blkverify: Wait for structured options
> > -
> > + 'blkdebug': 'BlockdevOptionsBlkdebug',
> > + 'blkverify': 'BlockdevOptionsBlkverify',
>
> As we are adding new arms to the union, we should document that these
> values are available since 2.0.
Hm, yes, I think this request makes sense. Do we have an existing example
of such documentation? Because I'm not quite sure where to put it.
Kevin
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2014-01-16 10:03 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 10:22 [Qemu-devel] [PULL 00/42] Block patches Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 01/42] rbd: switch from pipe to QEMUBH completion notification Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 02/42] qemu-iotests: Introduce _unsupported_imgopts Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 03/42] qemu-iotests: Add _unsupported_imgopts for vmdk subformats Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 04/42] qemu-iotests: Clean up all extents for vmdk Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 05/42] block/iscsi: return -ENOMEM if an async call fails immediately Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 06/42] gluster: Convert aio routines into coroutines Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 07/42] gluster: Implement .bdrv_co_write_zeroes for gluster Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 08/42] gluster: Add support for creating zero-filled image Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 09/42] sheepdog: fix clone operation by 'qemu-img create -b' Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 10/42] qtest: Fix the bug about disable vnc causes "make check" fail Kevin Wolf
2014-01-17 15:06 ` Andreas Färber
2014-01-18 11:54 ` Kewei Yu
2014-01-26 0:06 ` Andreas Färber
2014-01-26 8:04 ` Kewei Yu
2014-01-15 10:22 ` [Qemu-devel] [PULL 11/42] docs: qcow2 compat=1.1 is now the default Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 12/42] vmdk: Fix big flat extent IO Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 13/42] readline: decouple readline from the monitor Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 14/42] readline: move readline to a generic location Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 15/42] osdep: add qemu_set_tty_echo() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 16/42] qemu-io: use readline.c Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 17/42] qemu-io: add command completion Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 18/42] blkdebug: Use errp for read_config() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 19/42] blkdebug: Don't require sophisticated filename Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 20/42] qdict: Add qdict_array_split() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 21/42] qapi: extend qdict_flatten() for QLists Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 22/42] qemu-option: Add qemu_config_parse_qdict() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 23/42] blkdebug: Always call read_config() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 24/42] blkdebug: Use command-line in read_config() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 25/42] block: Allow reference for bdrv_file_open() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 26/42] block: Pass reference to bdrv_file_open() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 27/42] block: Allow block devices without files Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 28/42] block: Add bdrv_open_image() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 29/42] block: Use bdrv_open_image() in bdrv_open() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 30/42] block: Allow recursive "file"s Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 31/42] blockdev: Move "file" to legacy_opts Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 32/42] blkdebug: Allow command-line file configuration Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 33/42] blkverify: Allow command-line configuration Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 34/42] blkverify: Don't require protocol filename Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 35/42] qapi: Add "errno" to the list of polluted words Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 36/42] qapi: QMP interface for blkdebug and blkverify Kevin Wolf
2014-01-15 15:19 ` Eric Blake
2014-01-15 17:11 ` Paolo Bonzini
2014-01-16 10:03 ` Kevin Wolf [this message]
2014-01-17 15:01 ` Andreas Färber
2014-01-15 10:22 ` [Qemu-devel] [PULL 37/42] qemu-io: Make filename optional Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 38/42] tests: Add test for qdict_array_split() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 39/42] tests: Add test for qdict_flatten() Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 40/42] iotests: Test new blkdebug/blkverify interface Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 41/42] iotests: Test file format nesting Kevin Wolf
2014-01-15 10:22 ` [Qemu-devel] [PULL 42/42] block: fix backing file segfault Kevin Wolf
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=20140116100326.GC3369@dhcp-200-207.str.redhat.com \
--to=kwolf@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=eblake@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).