Hi On Thu, Jan 9, 2020 at 10:36 PM Kevin Wolf <kw...@redhat.com> wrote: > > Some QMP command handlers can block the main loop for a relatively long > time, for example because they perform some I/O. This is quite nasty. > Allowing such handlers to run in a coroutine where they can yield (and > therefore release the BQL) while waiting for an event such as I/O > completion solves the problem. > > This series adds the infrastructure to allow this and switches > block_resize to run in a coroutine as a first example. > > This is an alternative solution to Marc-André's "monitor: add > asynchronous command type" series. > > Kevin Wolf (4): > qapi: Add a 'coroutine' flag for commands > block: Mark 'block_resize' as coroutine > vl: Initialise main loop earlier > qmp: Move dispatcher to a coroutine > > qapi/block-core.json | 3 +- > tests/qapi-schema/qapi-schema-test.json | 1 + > docs/devel/qapi-code-gen.txt | 4 ++ > include/qapi/qmp/dispatch.h | 3 + > monitor/monitor-internal.h | 5 +- > monitor/monitor.c | 24 ++++--- > monitor/qmp.c | 83 ++++++++++++++++--------- > qapi/qmp-dispatch.c | 38 ++++++++++- > tests/test-qmp-cmds.c | 4 ++ > vl.c | 10 +-- > scripts/qapi/commands.py | 17 +++-- > scripts/qapi/doc.py | 2 +- > scripts/qapi/expr.py | 4 +- > scripts/qapi/introspect.py | 2 +- > scripts/qapi/schema.py | 9 ++- > tests/qapi-schema/qapi-schema-test.out | 2 + > tests/qapi-schema/test-qapi.py | 7 ++- > 17 files changed, 155 insertions(+), 63 deletions(-)
Series: Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> -- Marc-André Lureau