[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4/4] qmp: Add optional switch "query-nodes" in q
From: |
Eric Blake |
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 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 |
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 <address@hidden>
> ---
> 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
signature.asc
Description: OpenPGP digital signature
- Re: [Qemu-devel] [PATCH 1/4] block: Add bdrv_next_node, (continued)