From 8cade320c8838952b5f589c6df26b2e62dd099d7 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Thu, 24 Sep 2020 17:27:10 +0200 Subject: [PATCH] block/export: Add query-block-exports This adds a simple QMP command to query the list of block exports. Signed-off-by: Kevin Wolf Reviewed-by: Max Reitz Message-Id: <20200924152717.287415-25-kwolf@redhat.com> Acked-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- block/export/export.c | 23 +++++++++++++++++++++++ qapi/block-export.json | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/block/export/export.c b/block/export/export.c index 8702c233f3..657bb58b51 100644 --- a/block/export/export.c +++ b/block/export/export.c @@ -286,3 +286,26 @@ void qmp_block_export_del(const char *id, blk_exp_request_shutdown(exp); } + +BlockExportInfoList *qmp_query_block_exports(Error **errp) +{ + BlockExportInfoList *head = NULL, **p_next = &head; + BlockExport *exp; + + QLIST_FOREACH(exp, &block_exports, next) { + BlockExportInfoList *entry = g_new0(BlockExportInfoList, 1); + BlockExportInfo *info = g_new(BlockExportInfo, 1); + *info = (BlockExportInfo) { + .id = g_strdup(exp->id), + .type = exp->drv->type, + .node_name = g_strdup(bdrv_get_node_name(blk_bs(exp->blk))), + .shutting_down = !exp->user_owned, + }; + + entry->value = info; + *p_next = entry; + p_next = &entry->next; + } + + return head; +} diff --git a/qapi/block-export.json b/qapi/block-export.json index 76e014c406..91b042b453 100644 --- a/qapi/block-export.json +++ b/qapi/block-export.json @@ -245,3 +245,35 @@ ## { 'event': 'BLOCK_EXPORT_DELETED', 'data': { 'id': 'str' } } + +## +# @BlockExportInfo: +# +# Information about a single block export. +# +# @id: The unique identifier for the block export +# +# @type: The block export type +# +# @node-name: The node name of the block node that is exported +# +# @shutting-down: True if the export is shutting down (e.g. after a +# block-export-del command, but before the shutdown has +# completed) +# +# Since: 5.2 +## +{ 'struct': 'BlockExportInfo', + 'data': { 'id': 'str', + 'type': 'BlockExportType', + 'node-name': 'str', + 'shutting-down': 'bool' } } + +## +# @query-block-exports: +# +# Returns: A list of BlockExportInfo describing all block exports +# +# Since: 5.2 +## +{ 'command': 'query-block-exports', 'returns': ['BlockExportInfo'] }