v3: - Fix wrong copy-pasted function name in doc comment [Eric] - Fix "match" -> "matches" in comment [Eric] v2: - Add Patch 1 & 2 to remove unused NBD aio_context arguments and dead code [Fabiano] - Remove attach/detach prototypes from "io/channel.h" [Daniel] - Add utility function to set fd handlers [Daniel]
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 (4): nbd: drop unused nbd_receive_negotiate() aio_context argument nbd: drop unused nbd_start_negotiate() aio_context argument io: check there are no qio_channel_yield() coroutines during ->finalize() io: follow coroutine AioContext in qio_channel_yield() include/block/nbd.h | 3 +- include/io/channel-util.h | 23 ++++++ include/io/channel.h | 69 ++++++++--------- include/qemu/vhost-user-server.h | 1 + block/nbd.c | 11 +-- io/channel-command.c | 10 ++- io/channel-file.c | 9 ++- io/channel-null.c | 3 +- io/channel-socket.c | 9 ++- io/channel-tls.c | 6 +- io/channel-util.c | 24 ++++++ io/channel.c | 124 ++++++++++++++++++++++--------- migration/channel-block.c | 3 +- nbd/client-connection.c | 3 +- nbd/client.c | 14 +--- nbd/server.c | 14 +--- qemu-nbd.c | 4 +- scsi/qemu-pr-helper.c | 4 +- util/vhost-user-server.c | 27 +++++-- 19 files changed, 228 insertions(+), 133 deletions(-) -- 2.41.0