v2: - Drop patch 4 in v1. A second thought made me feel neither it nor Kevin's suggestion to move the BH process to bdrv_drain_recurse/BDRV_POLL_WHILE is a complete fix. So leave it for a separate patch. - Add rev-by to patches 1, 3, 4. - Split from patch 1 in v1 and add patch 2, for the new assertions. [Kevin] - Rewrite patch 5. Fix block job's co when a BDS is moved to a different aio context. [Kevin] - Add patch 6.
Crashes are reported on dataplane devices when doing snapshot and commit under guest I/O. With this series, Ed's test case '176' now passes (reran 10+ times): https://github.com/skyportsystems/qemu-1/commits/eswierk-iotests-2.9 The biggest fix for this is patch 5, which fixes a race condition between main thread and iothread. Fam Zheng (6): block: Fix unpaired aio_disable_external in external snapshot block: Assert attached child node has right aio context mirror: Fix aio context of mirror_top_bs block: Quiesce old aio context during bdrv_set_aio_context coroutine: Explicitly specify AioContext when entering coroutine tests/block-job-txn: Don't start block job before adding to txn block.c | 30 ++++++++++++++++++++++++++---- block/blkdebug.c | 4 ++-- block/blkverify.c | 8 ++++---- block/block-backend.c | 4 ++-- block/io.c | 14 +++++++------- block/mirror.c | 3 ++- block/quorum.c | 16 ++++++++-------- block/sheepdog.c | 4 ++-- blockdev.c | 4 ++-- blockjob.c | 4 ++-- hw/9pfs/9p.c | 4 ++-- hw/9pfs/coth.c | 4 ++-- include/block/block.h | 11 +++++++++++ include/qemu/coroutine.h | 11 ++++++----- include/qemu/main-loop.h | 2 +- migration/colo.c | 3 ++- migration/migration.c | 2 +- nbd/server.c | 5 +++-- qemu-img.c | 4 ++-- qemu-io-cmds.c | 2 +- tests/test-blockjob-txn.c | 6 +++++- tests/test-coroutine.c | 41 +++++++++++++++++++++-------------------- tests/test-thread-pool.c | 2 +- util/async.c | 4 ++-- util/qemu-coroutine-io.c | 3 ++- util/qemu-coroutine-lock.c | 6 ++++-- util/qemu-coroutine.c | 10 +++++----- util/trace-events | 2 +- 28 files changed, 129 insertions(+), 84 deletions(-) -- 2.9.3