On 28/11/2017 16:43, Kevin Wolf wrote:
> This reverts commit 6133b39f3c36623425a6ede9e89d93175fde15cd.
>
> The commit checked conditions that would expose a bug, but there is no
> real reason to forbid them apart from the bug, which we'll fix in a
> minute.
>
> In particular, reentering a coroutine during co_aio_sleep_ns() is fine;
> the function is explicitly written to allow this.
This is true.
> aio_co_schedule() can indeed conflict with direct coroutine invocations,
> but this is exactky what we want to fix, so remove that check again,
> too.
I'm not sure this is a good idea, as I answered in patch 3.
It can also conflict badly with another aio_co_schedule(). Your patch
here removes the assertion in this case, and patch 3 makes it easier to
get into the situation where two aio_co_schedule()s conflict with each
other.
For example, say you have a coroutine that calls aio_co_schedule on
itself, like
while (true) {
aio_co_schedule(qemu_get_current_aio_context(),
qemu_coroutine_self());
}
If somebody else calls qemu_coroutine_enter on this coroutine, *that* is
the bug. These patches would just cause some random corruption or
(perhaps worse) hang.
Paolo