Currently there is no way to query BlockStats of the backing chain. This adds "backing" field into BlockStats to make it possible.
The comment of "parent" is reworded. Signed-off-by: Fam Zheng <f...@redhat.com> --- v2: Only add "backing", drop "file". Signed-off-by: Fam Zheng <f...@redhat.com> --- block/qapi.c | 5 +++++ qapi-schema.json | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/block/qapi.c b/block/qapi.c index a32cb79..98b1b83 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -318,6 +318,11 @@ BlockStats *bdrv_query_stats(const BlockDriverState *bs) s->parent = bdrv_query_stats(bs->file); } + if (bs->backing_hd) { + s->has_backing = true; + s->backing = bdrv_query_stats(bs->backing_hd); + } + return s; } diff --git a/qapi-schema.json b/qapi-schema.json index f27c48a..0e534d0 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -1022,15 +1022,17 @@ # # @stats: A @BlockDeviceStats for the device. # -# @parent: #optional This may point to the backing block device if this is a -# a virtual block device. If it's a backing block, this will point -# to the backing file is one is present. +# @parent: #optional This describes the file block device if it has one. +# +# @backing: #optional This describes the backing block device if it has one. +# (Since 2.0) # # Since: 0.14.0 ## { 'type': 'BlockStats', 'data': {'*device': 'str', 'stats': 'BlockDeviceStats', - '*parent': 'BlockStats'} } + '*parent': 'BlockStats', + '*backing': 'BlockStats'} } ## # @query-blockstats: -- 1.8.5.3