This reverts the recent fix for the case of qemu-iotests 200 (block job completion races when using a separate I/O thread) that only fixed a symptom and caused many regressions, and replaces it with a new solution that hopefully attacks the right root cause.
The series also contains a bonus fix for a bug that was uncovered by the different timing with the patches that are reverted here. Kevin Wolf (4): Revert "coroutine: abort if we try to schedule or enter a pending coroutine" Revert "blockjob: do not allow coroutine double entry or entry-after-completion" coroutine: Cancel aio_co_schedule() on direct entry block: Expect graph changes in bdrv_parent_drained_begin/end include/block/blockjob_int.h | 3 +-- include/qemu/coroutine_int.h | 14 ++++---------- block/io.c | 8 ++++---- blockjob.c | 7 ++----- util/async.c | 26 +++++++++++++------------- util/qemu-coroutine-sleep.c | 12 ------------ util/qemu-coroutine.c | 31 +++++++++++++++++-------------- 7 files changed, 41 insertions(+), 60 deletions(-) -- 2.13.6