This series fixes the problem that devices like IDE, which submit requests as a direct result of I/O from the CPU thread, can continue to submit new requests even in a drained section.
In order to avoid a dependency for this series, I borrowed a patch from Max. Kevin Wolf (3): block: Remove blk_pread_unthrottled() mirror: Keep target drained until graph changes are done block-backend: Queue requests while drained Max Reitz (1): block: Reduce (un)drains when replacing a child include/sysemu/block-backend.h | 13 +++--- block.c | 49 +++++++++++++------- block/backup.c | 1 + block/block-backend.c | 85 +++++++++++++++++++++++----------- block/commit.c | 2 + block/mirror.c | 20 ++++---- blockjob.c | 3 ++ hw/block/hd-geometry.c | 7 +-- tests/test-bdrv-drain.c | 1 + 9 files changed, 118 insertions(+), 63 deletions(-) -- 2.20.1