The following test while /bin/true ; do virsh snapshot-create rhel7 sleep 10 virsh snapshot-delete rhel7 --current done with enabled iothreads on a running VM leads to a lot of troubles: hangs, asserts, errors.
Though (in general) HMP snapshot code is terrible. I think it should be dropped at once and replaced with blkdev transactions code. Though is could not fit to QEMU 2.5/stable at all. Anyway, I think that the construction like assert(aio_context_is_locked(aio_context)); should be widely used to ensure proper locking. Changes from v1: - aio-context locking added - comment is rewritten Signed-off-by: Denis V. Lunev <d...@openvz.org> CC: Stefan Hajnoczi <stefa...@redhat.com> CC: Paolo Bonzini <pbonz...@redhat.com> Denis V. Lunev (4): fifolock: create rfifolock_is_locked helper aio_context: create aio_context_is_locked helper io: add locking constraints check into bdrv_drain to ensure locking migration: add missed aio_context_acquire into hmp_savevm/hmp_delvm Pavel Butsykin (1): virtio: sync the dataplane vring state to the virtqueue before virtio_save async.c | 5 +++++ block/io.c | 5 ++++- block/snapshot.c | 5 +++++ hw/block/virtio-blk.c | 5 +++++ hw/scsi/virtio-scsi.c | 5 +++++ include/block/aio.h | 3 +++ include/qemu/rfifolock.h | 1 + migration/savevm.c | 7 +++++++ util/rfifolock.c | 9 +++++++-- 9 files changed, 42 insertions(+), 3 deletions(-) -- 2.1.4