The ongoing QEMU multi-queue block layer effort makes it possible for multiple
threads to process I/O in parallel. The nbd block driver is not compatible with
the multi-queue block layer yet because QIOChannel cannot be used easily from
coroutines running in multiple threads. This series changes the QIOChannel API
to make that possible.
Stefan Hajnoczi (2):
io: check there are no qio_channel_yield() coroutines during
->finalize()
io: follow coroutine AioContext in qio_channel_yield()
include/io/channel.h | 34 ++++++++-
include/qemu/vhost-user-server.h | 1 +
block/nbd.c | 11 +--
io/channel-command.c | 13 +++-
io/channel-file.c | 18 ++++-
io/channel-null.c | 3 +-
io/channel-socket.c | 18 ++++-
io/channel-tls.c | 6 +-
io/channel.c | 124 ++++++++++++++++++++++---------
migration/channel-block.c | 3 +-
nbd/client.c | 2 +-
nbd/server.c | 14 +---
scsi/qemu-pr-helper.c | 4 +-
util/vhost-user-server.c | 27 +++++--
14 files changed, 195 insertions(+), 83 deletions(-)
--
2.41.0