[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 0/4] qmp: Optionally run handlers in coroutines
From: |
Kevin Wolf |
Subject: |
[PATCH 0/4] qmp: Optionally run handlers in coroutines |
Date: |
Thu, 9 Jan 2020 19:35:41 +0100 |
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(-)
--
2.20.1