Now that the current dataplane failure has been isolated to an unwanted reentrancy in virtio, I can post v2 of these patches. Please review, as I would like to get part 2 in QEMU 2.6 as well (I plan to send it out tomorrow, since I hope there will be no comments on this one and I have already tested both of them).
The changes from v1 are minor and all correspond to Fam's review (I've pointed them out in the single patches - patch 2,5,7,9,13). Paolo Paolo Bonzini (16): block: make bdrv_start_throttled_reqs return void block: move restarting of throttled reqs to block/throttle-groups.c block: introduce bdrv_no_throttling_begin/end block: plug whole tree at once, introduce bdrv_io_unplugged_begin/end mirror: use bottom half to re-enter coroutine block: add BDS field to count in-flight requests block: change drain to look only at one child at a time blockjob: introduce .drain callback for jobs block: wait for all pending I/O when doing synchronous requests nfs: replace aio_poll with bdrv_drain sheepdog: disable dataplane aio: introduce aio_context_in_iothread block: only call aio_poll from iothread iothread: release AioContext around aio_poll qemu-thread: introduce QemuRecMutex aio: convert from RFifoLock to QemuRecMutex async.c | 28 +--- block.c | 4 +- block/backup.c | 7 + block/io.c | 276 ++++++++++++++++++++++++---------------- block/linux-aio.c | 13 +- block/mirror.c | 38 +++++- block/nfs.c | 50 +++++--- block/qed-table.c | 16 +-- block/raw-aio.h | 2 +- block/raw-posix.c | 16 +-- block/sheepdog.c | 19 +++ block/throttle-groups.c | 20 +++ blockjob.c | 16 ++- docs/multiple-iothreads.txt | 40 +++--- include/block/aio.h | 13 +- include/block/block.h | 3 +- include/block/block_int.h | 22 +++- include/block/blockjob.h | 7 + include/block/throttle-groups.h | 1 + include/qemu/rfifolock.h | 54 -------- include/qemu/thread-posix.h | 6 + include/qemu/thread-win32.h | 10 ++ include/qemu/thread.h | 3 + iothread.c | 20 +-- stubs/Makefile.objs | 1 + stubs/iothread.c | 8 ++ tests/.gitignore | 1 - tests/Makefile | 2 - tests/qemu-iotests/060 | 8 +- tests/qemu-iotests/060.out | 4 +- tests/test-aio.c | 22 ++-- tests/test-rfifolock.c | 92 -------------- util/Makefile.objs | 1 - util/qemu-thread-posix.c | 13 ++ util/qemu-thread-win32.c | 25 ++++ util/rfifolock.c | 78 ------------ 36 files changed, 461 insertions(+), 478 deletions(-) delete mode 100644 include/qemu/rfifolock.h create mode 100644 stubs/iothread.c delete mode 100644 tests/test-rfifolock.c delete mode 100644 util/rfifolock.c -- 1.8.3.1