[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 0/4] qmp: Optionally run handlers in coroutines
From: |
Kevin Wolf |
Subject: |
[PATCH v2 0/4] qmp: Optionally run handlers in coroutines |
Date: |
Tue, 14 Jan 2020 19:27:31 +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.
v2:
- Fix typo in a commit message [Eric]
- Use hyphen instead of underscore for the test command [Eric]
- Mark qmp_block_resize() as coroutine_fn [Stefan]
Kevin Wolf (4):
qapi: Add a 'coroutine' flag for commands
vl: Initialise main loop earlier
qmp: Move dispatcher to a coroutine
block: Mark 'block_resize' as 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 +-
blockdev.c | 6 +-
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 ++-
18 files changed, 158 insertions(+), 66 deletions(-)
--
2.20.1
- [PATCH v2 0/4] qmp: Optionally run handlers in coroutines,
Kevin Wolf <=
- [PATCH v2 1/4] qapi: Add a 'coroutine' flag for commands, Kevin Wolf, 2020/01/14
- [PATCH v2 2/4] vl: Initialise main loop earlier, Kevin Wolf, 2020/01/14
- [PATCH v2 3/4] qmp: Move dispatcher to a coroutine, Kevin Wolf, 2020/01/14
- [PATCH v2 4/4] block: Mark 'block_resize' as coroutine, Kevin Wolf, 2020/01/14
- Re: [PATCH v2 0/4] qmp: Optionally run handlers in coroutines, Daniel P . Berrangé, 2020/01/14
- Re: [PATCH v2 0/4] qmp: Optionally run handlers in coroutines, no-reply, 2020/01/14
- Re: [PATCH v2 0/4] qmp: Optionally run handlers in coroutines, Stefan Hajnoczi, 2020/01/15