aboutsummaryrefslogtreecommitdiff
path: root/block/qapi.c
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2020-01-20 09:50:49 +0100
committerMax Reitz <mreitz@redhat.com>2020-02-20 16:43:42 +0100
commitfacda5443f5a8676fb635b82ac1046ac6b6a67ce (patch)
tree4309b8f137bf448d3ee569befa64b63d0e1b1f81 /block/qapi.c
parentb0c4cf21b0f26533e4aa6ca1930b2c9f52371bfa (diff)
downloadqemu-facda5443f5a8676fb635b82ac1046ac6b6a67ce.zip
qemu-facda5443f5a8676fb635b82ac1046ac6b6a67ce.tar.gz
qemu-facda5443f5a8676fb635b82ac1046ac6b6a67ce.tar.bz2
qapi: Allow getting flat output from 'query-named-block-nodes'
When a management application manages node names there's no reason to recurse into backing images in the output of query-named-block-nodes. Add a parameter to the command which will return just the top level structs. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Message-Id: <4470f8c779abc404dcf65e375db195cd91a80651.1579509782.git.pkrempa@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> [mreitz: Fixed coding style] Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'block/qapi.c')
-rw-r--r--block/qapi.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/block/qapi.c b/block/qapi.c
index 9a5d0c9..3f09477 100644
--- a/block/qapi.c
+++ b/block/qapi.c
@@ -42,7 +42,9 @@
#include "qemu/cutils.h"
BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
- BlockDriverState *bs, Error **errp)
+ BlockDriverState *bs,
+ bool flat,
+ Error **errp)
{
ImageInfo **p_image_info;
BlockDriverState *bs0;
@@ -156,6 +158,11 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
return NULL;
}
+ /* stop gathering data for flat output */
+ if (flat) {
+ break;
+ }
+
if (bs0->drv && bs0->backing) {
info->backing_file_depth++;
bs0 = bs0->backing->bs;
@@ -389,7 +396,7 @@ static void bdrv_query_info(BlockBackend *blk, BlockInfo **p_info,
if (bs && bs->drv) {
info->has_inserted = true;
- info->inserted = bdrv_block_device_info(blk, bs, errp);
+ info->inserted = bdrv_block_device_info(blk, bs, false, errp);
if (info->inserted == NULL) {
goto err;
}