On 2014-10-31 at 04:20, Fam Zheng wrote:
On Wed, 10/29 10:11, Max Reitz wrote:
On 2014-10-29 at 06:04, 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 <f...@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(-)
diff --git a/block/qapi.c b/block/qapi.c
index a4d1a20..e26033e 100644
--- a/block/qapi.c
+++ b/block/qapi.c
@@ -322,7 +322,8 @@ static void bdrv_query_info(BlockBackend *blk, BlockInfo
**p_info,
qapi_free_BlockInfo(info);
}
-static BlockStats *bdrv_query_stats(const BlockDriverState *bs)
+static BlockStats *bdrv_query_stats(const BlockDriverState *bs,
+ bool query_backing)
{
BlockStats *s;
@@ -352,12 +353,12 @@ static BlockStats *bdrv_query_stats(const
BlockDriverState *bs)
if (bs->file) {
s->has_parent = true;
- s->parent = bdrv_query_stats(bs->file);
+ s->parent = bdrv_query_stats(bs->file, query_backing);
}
- if (bs->backing_hd) {
+ if (query_backing && bs->backing_hd) {
s->has_backing = true;
- s->backing = bdrv_query_stats(bs->backing_hd);
+ s->backing = bdrv_query_stats(bs->backing_hd, query_backing);
}
Is there a specific reason why you're not querying the backing chain but
still recurse to bs->file?
Unlike its backing, there can be some information in ->file which is
interesting to the node itself, because it is ->file carries out the actual
read/write on the image. Makes sense?
Ah, I forgot to answer. Well, ->backing carries out reads, too. I
thought you omitted it because you could give it a node-name as well and
therefore you'd have some BDS appear twice; but the same applies to
->file, that's why I asked.
Max