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? Fam