Hi, I noted that test-bdrv-drain sometimgs hangs (very rarely, though), and tried to write a test that triggers the issue. I failed to do so (there is a good reason for that, see patch 1), but on my way I noticed that calling bdrv_set_aio_context_ignore() from any AioContext but the main one is a bad idea. Hence patch 2.
Anyway, I found the problem, which is fixed by patch 1 -- I think it’s rather obvious. There is no dedicated test because I don’t think it’s possible to write one, as I explain there. Max Reitz (2): block: Dec. drained_end_counter before bdrv_wakeup block: Only the main loop can change AioContexts include/block/block.h | 8 +++----- block.c | 13 ++++++++----- block/io.c | 5 ++--- 3 files changed, 13 insertions(+), 13 deletions(-) -- 2.21.0