On Tue, Jun 7, 2016 at 1:42 PM, Jason J. Herne <jjhe...@linux.vnet.ibm.com> wrote: > On 06/06/2016 10:44 PM, Fam Zheng wrote: >> >> On Mon, 06/06 14:55, Jason J. Herne wrote: >>>> >>>> I'll see if I can reproduce it here. >>>> >>>> Fam >>>> >>> >>> Hi Fam, >>> Have you had any luck reproducing this? >> >> >> No I cannot reproduce so far. >> > > I can hit the problem 100% of the time. Is there any info I can provide to > help? Either with debugging or reproducing?
I have a related scenario that is reproducible on qemu.git/master: Launch an x86 guest with virtio-blk-pci,iothread= and perform drive_mirror to NBD. Now live migrate (without block migration because you already mirrored) and the source QEMU will eventually abort. The backtrace shows the coroutine is running in the IOThread. It should be doing that since virtio-blk.c stops dataplane when live migration/savevm begins. What happens is that the mirror block job's coroutine continues to run in the IOThread but the BlockDriverState's AioContext has switched back to the main loop. blk_add_aio_context_notifier() calls are missing for block jobs. They need to attach/detach when the AioContext changes. This needs to be fixed. I believe Paolo has a patch to continue using dataplane during savevm but that's a workaround rather than a solution to this problem. Stefan