mirror of https://gitee.com/openkylin/qemu.git
block/export: Add query-block-exports
This adds a simple QMP command to query the list of block exports. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20200924152717.287415-25-kwolf@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
331170e073
commit
8cade320c8
|
@ -286,3 +286,26 @@ void qmp_block_export_del(const char *id,
|
||||||
|
|
||||||
blk_exp_request_shutdown(exp);
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -245,3 +245,35 @@
|
||||||
##
|
##
|
||||||
{ 'event': 'BLOCK_EXPORT_DELETED',
|
{ 'event': 'BLOCK_EXPORT_DELETED',
|
||||||
'data': { 'id': 'str' } }
|
'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'] }
|
||||||
|
|
Loading…
Reference in New Issue