qemu/include
Kevin Wolf a7002f15c8 nbd/server: Fix drained_poll to wake coroutine in right AioContext
nbd_drained_poll() generally runs in the main thread, not whatever
iothread the NBD server coroutine is meant to run in, so it can't
directly reenter the coroutines to wake them up.

The code seems to have the right intention, it specifies the correct
AioContext when it calls qemu_aio_coroutine_enter(). However, this
functions doesn't schedule the coroutine to run in that AioContext, but
it assumes it is already called in the home thread of the AioContext.

To fix this, add a new thread-safe qio_channel_wake_read() that can be
called in the main thread to wake up the coroutine in its AioContext,
and use this in nbd_drained_poll().

Cc: qemu-stable@nongnu.org
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20230517152834.277483-3-kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit 7c1f51bf38)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2023-05-22 20:54:40 +03:00
..
authz Prefer 'on' | 'off' over 'yes' | 'no' for bool options 2021-01-29 17:07:53 +00:00
block block: bdrv/blk_co_unref() for calls in coroutine context 2023-05-10 20:50:38 +03:00
chardev chardev: src buffer const for write functions 2022-09-29 14:38:05 +04:00
crypto replace TABs with spaces 2023-03-20 12:43:50 +01:00
disas replace TABs with spaces 2023-03-20 12:43:50 +01:00
exec include/exec: Change reserved_va semantics to last byte 2023-03-28 15:23:10 -07:00
fpu fpu: Add rebias bool, value and operation 2022-08-31 14:08:05 -03:00
gdbstub gdbstub: Remove gdb_do_syscallv 2023-03-07 20:44:09 +00:00
hw hw/pci: Disable PCI_ERR_UNCOR_MASK register for machine type < 8.0 2023-05-22 19:38:44 +03:00
io nbd/server: Fix drained_poll to wake coroutine in right AioContext 2023-05-22 20:54:40 +03:00
libdecnumber Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
migration migration: Rename res_{postcopy,precopy}_only 2023-02-15 20:04:30 +01:00
monitor hmp: add cryptodev info command 2023-03-07 12:38:59 -05:00
net net/eth: Introduce EthL4HdrProto 2023-03-10 15:35:38 +08:00
qapi error: add global &error_warn destination 2023-03-13 15:23:37 +04:00
qemu util: import GTree as QTree 2023-03-28 15:23:10 -07:00
qom qom/object: Remove circular include dependency 2022-06-28 10:53:32 +02:00
scsi coroutine: Clean up superfluous inclusion of qemu/coroutine.h 2023-01-19 10:18:28 +01:00
semihosting semihosting: Allow optional use of semihosting from userspace 2022-09-13 17:18:21 +01:00
standard-headers linux-headers: Update to v6.2-rc8 2023-02-16 12:13:46 -07:00
sysemu block: bdrv/blk_co_unref() for calls in coroutine context 2023-05-10 20:50:38 +03:00
tcg tcg: Drop tcg_const_* 2023-03-13 07:03:39 -07:00
ui ui: introduce egl_init() 2023-03-13 23:48:45 +04:00
user *: Add missing includes of qemu/plugin.h 2023-03-22 15:06:57 +00:00
elf.h replace TABs with spaces 2023-03-20 12:43:50 +01:00
glib-compat.h compiler.h: replace QEMU_NORETURN with G_NORETURN 2022-04-21 17:03:51 +04:00
qemu-io.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
qemu-main.h ui/cocoa: Run qemu_init in the main thread 2022-09-23 14:36:33 +02:00