From: Eric Blake <eblake@redhat.com>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Benoit Canet <benoit@irqsave.net>,
Markus Armbruster <armbru@redhat.com>,
Max Reitz <mreitz@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Luiz Capitulino <lcapitulino@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 4/4] qmp: Add optional switch "query-nodes" in query-blockstats
Date: Thu, 30 Oct 2014 15:47:01 -0600 [thread overview]
Message-ID: <5452B1D5.9050503@redhat.com> (raw)
In-Reply-To: <1414559044-14501-5-git-send-email-famz@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2512 bytes --]
On 10/28/2014 11:04 PM, Fam Zheng wrote:
> This bool option will allow query all the node names. It iterates all
> the BDSes that are assigned a name, also in this case don't query up the
> backing chain.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
> block/qapi.c | 20 +++++++++++++-------
> hmp.c | 2 +-
> qapi/block-core.json | 4 +++-
> qmp-commands.hx | 2 +-
> 4 files changed, 18 insertions(+), 10 deletions(-)
>
> -BlockStatsList *qmp_query_blockstats(Error **errp)
> +BlockStatsList *qmp_query_blockstats(bool has_query_nodes,
> + bool query_nodes,
> + Error **errp)
> {
> BlockStatsList *head = NULL, **p_next = &head;
> BlockDriverState *bs = NULL;
>
> - while ((bs = bdrv_next(bs))) {
> + /* Just to be safe if query_nodes is not always intialized */
s/intialized/initialized/
> + query_nodes = query_nodes && has_query_nodes;
If things aren't initialized (was true a while ago, but we recently
fixed that to ensure 0 initialization, although no one yet really relies
on the guarantee), then valgrind could complain of a branch on an uninit
memory location. Idiomatically, this is usually written:
query_nodes = has_query_nodes && query_nodes;
to pacify valgrind if we hadn't zero-initialized; although logically,
the result is identical, so I don't care if you leave it.
> +++ b/qapi/block-core.json
> @@ -434,7 +434,9 @@
> #
> # Since: 0.14.0
> ##
> -{ 'command': 'query-blockstats', 'returns': ['BlockStats'] }
> +{ 'command': 'query-blockstats',
> + 'data': {'*query-nodes': 'bool' },
> + 'returns': ['BlockStats'] }
Max correctly pointed out that this is missing documentation.
The idea looks sane; it will visit all named nodes (whether or not those
nodes are also reachable from named devices), and omit any unnamed nodes
(right now, libvirt would have to be taught to name nodes, or Jeff's
patch to auto-name nodes will avoid that problem).
Hmm, I wonder - if we are adding an optional parameter that controls
what to iterate over, should we also add an optional parameter that says
to limit the output to a given input name? Then again, we don't have
very many existing query-* commands that filter, and at any rate, adding
such a filter should be its own patch.
--
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: 539 bytes --]
next prev parent reply other threads:[~2014-10-31 15:27 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-29 5:04 [Qemu-devel] [PATCH 0/4] block: Allow query stats for drive-mirror target Fam Zheng
2014-10-29 5:04 ` [Qemu-devel] [PATCH 1/4] block: Add bdrv_next_node Fam Zheng
2014-10-29 8:49 ` Max Reitz
2014-10-30 21:32 ` Eric Blake
2014-10-29 5:04 ` [Qemu-devel] [PATCH 2/4] block: Add bdrv_get_node_name Fam Zheng
2014-10-29 8:51 ` Max Reitz
2014-10-30 21:33 ` Eric Blake
2014-10-29 5:04 ` [Qemu-devel] [PATCH 3/4] block: Include "node-name" if present in query-blockstats Fam Zheng
2014-10-29 8:57 ` Max Reitz
2014-10-30 21:36 ` Eric Blake
2014-10-29 5:04 ` [Qemu-devel] [PATCH 4/4] qmp: Add optional switch "query-nodes" " Fam Zheng
2014-10-29 9:11 ` Max Reitz
2014-10-31 3:20 ` Fam Zheng
2014-11-04 8:49 ` Max Reitz
2014-10-30 21:47 ` Eric Blake [this message]
2014-10-31 3:14 ` Fam Zheng
2014-10-30 21:48 ` [Qemu-devel] [PATCH 0/4] block: Allow query stats for drive-mirror target Eric Blake
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=5452B1D5.9050503@redhat.com \
--to=eblake@redhat.com \
--cc=armbru@redhat.com \
--cc=benoit@irqsave.net \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=lcapitulino@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).