Sending this out now that NBD's incorrect uses have been fixed. There is no equivalent of qemu_co_queue_enter_next that restarts all coroutines but that is incorrect because qemu_co_queue_restart_all should really be a coroutine_fn. The NBD uses have been fixed by removing the calls to qemu_co_queue_restart_all; graphic_hw_update_done works just because it uses the BQL; but the new rwlock for the BlockDriverState graph will need it.
The series introduces the new function, removes some duplicated code around it, and marks qemu_co_queue_next and qemu_co_queue_restart_all as coroutine_fn. Paolo Paolo Bonzini (3): coroutine-lock: qemu_co_queue_next is a coroutine-only qemu_co_enter_next coroutine-lock: introduce qemu_co_queue_enter_all coroutine-lock: qemu_co_queue_restart_all is a coroutine-only qemu_co_enter_all block/io.c | 2 +- include/qemu/coroutine.h | 27 +++++++++++++++++----- ui/console.c | 2 +- util/qemu-coroutine-lock.c | 47 +++++++++++++++----------------------- 4 files changed, 42 insertions(+), 36 deletions(-) -- 2.35.1