[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 07/10] block: Convert qmp_query_named_block_nodes to coroutine
From: |
Fabiano Rosas |
Subject: |
[PATCH v2 07/10] block: Convert qmp_query_named_block_nodes to coroutine |
Date: |
Fri, 9 Jun 2023 17:19:07 -0300 |
From: Lin Ma <lma@suse.com>
We're converting callers of bdrv_get_allocated_file_size() to run in
coroutines because that function will be made asynchronous when called
(indirectly) from the QMP dispatcher.
This QMP command is a candidate because it indirectly calls
bdrv_get_allocated_file_size() through bdrv_block_device_info() ->
bdrv_query_image_info() -> bdrv_query_image_info().
The previous patches have determined that bdrv_query_image_info() and
bdrv_do_query_node_info() are coroutine-safe so we can just make the
QMP command run in a coroutine.
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
block.c | 2 +-
blockdev.c | 6 +++---
qapi/block-core.json | 3 ++-
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/block.c b/block.c
index f94cee8930..abed744b60 100644
--- a/block.c
+++ b/block.c
@@ -6148,7 +6148,7 @@ BlockDeviceInfoList *bdrv_named_nodes_list(bool flat,
list = NULL;
QTAILQ_FOREACH(bs, &graph_bdrv_states, node_list) {
- BlockDeviceInfo *info = bdrv_block_device_info(NULL, bs, flat, errp);
+ BlockDeviceInfo *info = bdrv_co_block_device_info(NULL, bs, flat,
errp);
if (!info) {
qapi_free_BlockDeviceInfoList(list);
return NULL;
diff --git a/blockdev.c b/blockdev.c
index e6eba61484..8b5f7d06c8 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -2818,9 +2818,9 @@ void qmp_drive_backup(DriveBackup *backup, Error **errp)
blockdev_do_action(&action, errp);
}
-BlockDeviceInfoList *qmp_query_named_block_nodes(bool has_flat,
- bool flat,
- Error **errp)
+BlockDeviceInfoList *coroutine_fn qmp_query_named_block_nodes(bool has_flat,
+ bool flat,
+ Error **errp)
{
bool return_flat = has_flat && flat;
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 5dd5f7e4b0..9d4c92f2c9 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -1972,7 +1972,8 @@
{ 'command': 'query-named-block-nodes',
'returns': [ 'BlockDeviceInfo' ],
'data': { '*flat': 'bool' },
- 'allow-preconfig': true }
+ 'allow-preconfig': true,
+ 'coroutine': true}
##
# @XDbgBlockGraphNodeType:
--
2.35.3
- [PATCH v2 00/10] block: Make raw_co_get_allocated_file_size asynchronous, Fabiano Rosas, 2023/06/09
- [PATCH v2 01/10] block: Remove bdrv_query_block_node_info, Fabiano Rosas, 2023/06/09
- [PATCH v2 02/10] block: Remove unnecessary variable in bdrv_block_device_info, Fabiano Rosas, 2023/06/09
- [PATCH v2 03/10] block: Allow the wrapper script to see functions declared in qapi.h, Fabiano Rosas, 2023/06/09
- [PATCH v2 04/10] block: Temporarily mark bdrv_co_get_allocated_file_size as mixed, Fabiano Rosas, 2023/06/09
- [PATCH v2 05/10] block: Convert bdrv_query_block_graph_info to coroutine, Fabiano Rosas, 2023/06/09
- [PATCH v2 06/10] block: Convert bdrv_block_device_info into co_wrapper, Fabiano Rosas, 2023/06/09
- [PATCH v2 08/10] block: Don't query all block devices at hmp_nbd_server_start, Fabiano Rosas, 2023/06/09
- [PATCH v2 09/10] block: Convert qmp_query_block() to coroutine_fn, Fabiano Rosas, 2023/06/09
- [PATCH v2 07/10] block: Convert qmp_query_named_block_nodes to coroutine,
Fabiano Rosas <=
- [PATCH v2 10/10] block: Add a thread-pool version of fstat, Fabiano Rosas, 2023/06/09