The following changes since commit 3ccf6cd0e3e1dfd663814640b3b18b55715d7a75:
Merge remote-tracking branch 'remotes/kraxel/tags/audio-20210617-pull-request' into staging (2021-06-18 09:54:42 +0100) are available in the Git repository at: https://repo.or.cz/qemu/ericb.git tags/pull-nbd-2021-06-15-v2 for you to fetch changes up to bbfb7c2f350262f893642433dea66352fc168295: block/nbd: safer transition to receiving request (2021-06-18 12:21:22 -0500) v2: silence uninit variable warning [clang, Vladimir] only re-sending the affected patch ---------------------------------------------------------------- nbd patches for 2021-06-15 - bug fixes in coroutine aio context handling - rework NBD client connection logic to perform more work in coroutine ---------------------------------------------------------------- Paolo Bonzini (2): async: the main AioContext is only "current" if under the BQL tests: cover aio_co_enter from a worker thread without BQL taken Roman Kagan (2): block/nbd: fix channel object leak block/nbd: ensure ->connection_thread is always valid Vladimir Sementsov-Ogievskiy (30): co-queue: drop extra coroutine_fn marks block/nbd: fix how state is cleared on nbd_open() failure paths block/nbd: connect_thread_func(): do qio_channel_set_delay(false) qemu-sockets: introduce socket_address_parse_named_fd() block/nbd: call socket_address_parse_named_fd() in advance block/nbd: nbd_client_handshake(): fix leak of s->ioc block/nbd: BDRVNBDState: drop unused connect_err and connect_status block/nbd: simplify waking of nbd_co_establish_connection() block/nbd: drop thr->state block/nbd: bs-independent interface for nbd_co_establish_connection() block/nbd: make nbd_co_establish_connection_cancel() bs-independent block/nbd: rename NBDConnectThread to NBDClientConnection block/nbd: introduce nbd_client_connection_new() block/nbd: introduce nbd_client_connection_release() nbd: move connection code from block/nbd to nbd/client-connection nbd/client-connection: use QEMU_LOCK_GUARD nbd/client-connection: add possibility of negotiation nbd/client-connection: implement connection retry nbd/client-connection: shutdown connection on release block/nbd: split nbd_handle_updated_info out of nbd_client_handshake() block/nbd: use negotiation of NBDClientConnection block/nbd: don't touch s->sioc in nbd_teardown_connection() block/nbd: drop BDRVNBDState::sioc nbd/client-connection: return only one io channel block-coroutine-wrapper: allow non bdrv_ prefix block/nbd: split nbd_co_do_establish_connection out of nbd_reconnect_attempt nbd/client-connection: add option for non-blocking connection attempt block/nbd: reuse nbd_co_do_establish_connection() in nbd_open() block/nbd: add nbd_client_connected() helper block/nbd: safer transition to receiving request scripts/block-coroutine-wrapper.py | 7 +- block/coroutines.h | 6 + include/block/aio.h | 5 +- include/block/nbd.h | 18 ++ include/qemu/coroutine.h | 6 +- include/qemu/sockets.h | 11 + block/nbd.c | 585 ++++++++----------------------------- iothread.c | 9 +- nbd/client-connection.c | 388 ++++++++++++++++++++++++ stubs/iothread-lock.c | 2 +- stubs/iothread.c | 8 - tests/unit/iothread.c | 9 +- tests/unit/test-aio.c | 37 +++ util/async.c | 20 ++ util/main-loop.c | 1 + util/qemu-sockets.c | 19 ++ nbd/meson.build | 1 + stubs/meson.build | 1 - 18 files changed, 642 insertions(+), 491 deletions(-) create mode 100644 nbd/client-connection.c delete mode 100644 stubs/iothread.c *** BLURB HERE *** Paolo Bonzini (2): async: the main AioContext is only "current" if under the BQL tests: cover aio_co_enter from a worker thread without BQL taken Roman Kagan (2): block/nbd: fix channel object leak block/nbd: ensure ->connection_thread is always valid Vladimir Sementsov-Ogievskiy (30): co-queue: drop extra coroutine_fn marks block/nbd: fix how state is cleared on nbd_open() failure paths block/nbd: connect_thread_func(): do qio_channel_set_delay(false) qemu-sockets: introduce socket_address_parse_named_fd() block/nbd: call socket_address_parse_named_fd() in advance block/nbd: nbd_client_handshake(): fix leak of s->ioc block/nbd: BDRVNBDState: drop unused connect_err and connect_status block/nbd: simplify waking of nbd_co_establish_connection() block/nbd: drop thr->state block/nbd: bs-independent interface for nbd_co_establish_connection() block/nbd: make nbd_co_establish_connection_cancel() bs-independent block/nbd: rename NBDConnectThread to NBDClientConnection block/nbd: introduce nbd_client_connection_new() block/nbd: introduce nbd_client_connection_release() nbd: move connection code from block/nbd to nbd/client-connection nbd/client-connection: use QEMU_LOCK_GUARD nbd/client-connection: add possibility of negotiation nbd/client-connection: implement connection retry nbd/client-connection: shutdown connection on release block/nbd: split nbd_handle_updated_info out of nbd_client_handshake() block/nbd: use negotiation of NBDClientConnection block/nbd: don't touch s->sioc in nbd_teardown_connection() block/nbd: drop BDRVNBDState::sioc nbd/client-connection: return only one io channel block-coroutine-wrapper: allow non bdrv_ prefix block/nbd: split nbd_co_do_establish_connection out of nbd_reconnect_attempt nbd/client-connection: add option for non-blocking connection attempt block/nbd: reuse nbd_co_do_establish_connection() in nbd_open() block/nbd: add nbd_client_connected() helper block/nbd: safer transition to receiving request scripts/block-coroutine-wrapper.py | 7 +- block/coroutines.h | 6 + include/block/aio.h | 5 +- include/block/nbd.h | 18 + include/qemu/coroutine.h | 6 +- include/qemu/sockets.h | 11 + block/nbd.c | 585 +++++++---------------------- iothread.c | 9 +- nbd/client-connection.c | 388 +++++++++++++++++++ stubs/iothread-lock.c | 2 +- stubs/iothread.c | 8 - tests/unit/iothread.c | 9 +- tests/unit/test-aio.c | 37 ++ util/async.c | 20 + util/main-loop.c | 1 + util/qemu-sockets.c | 19 + nbd/meson.build | 1 + stubs/meson.build | 1 - 18 files changed, 642 insertions(+), 491 deletions(-) create mode 100644 nbd/client-connection.c delete mode 100644 stubs/iothread.c -- 2.31.1