On 07/04/2017 19:33, Stefan Hajnoczi wrote: > The migration thread is holding the QEMU global mutex, the AioContext, > and the qcow2 s->lock while the L2 table is read from disk. > > The QEMU global mutex is needed for block layer operations that touch > the global drives list. bdrv_is_allocated() can be called without the > global mutex.
Hi Stefan, only virtio-blk and virtio-scsi take the AioContext lock (because they support dataplane). For block migration to work with devices such as IDE, it needs to take the iothread lock too. I think there's a comment about this in migration/block.c. However, this will hopefully be fixed in 2.10 by making the block layer thread safe. Paolo