with 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.
Anyway, I think that the construction like assert(aio_context_is_locked(aio_context)); should be widely used to ensure proper locking. Changes from v4: - only migration/savevm.c code and monitor is affected now. Generic block layer stuff will be sent separately to speedup merging. The approach in general was negotiated with Juan and Stefan. Changes from v3: - more places found - new aio_poll concept, see patch 10 Changes from v2: - droppped patch 5 as already merged - changed locking scheme in patch 4 by suggestion of Juan 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: Juan Quintela <quint...@redhat.com> CC: Kevin Wolf <kw...@redhat.com> Denis V. Lunev (11): snapshot: create helper to test that block drivers supports snapshots snapshot: return error code from bdrv_snapshot_delete_by_id_or_name snapshot: create bdrv_all_delete_snapshot helper snapshot: create bdrv_all_goto_snapshot helper snapshot: create bdrv_all_find_snapshot helper migration: drop find_vmstate_bs check in hmp_delvm migration: reorder processing in hmp_savevm migration: implement bdrv_all_find_vmstate_bs and bdrv_unlock helpers migration: add missed aio_context_acquire for state writing/reading snapshot: create bdrv_all_create_snapshot helper monitor: add missed aio_context_acquire into vm_completion call block/snapshot.c | 141 +++++++++++++++++++++++++++++- include/block/snapshot.h | 23 ++++- migration/savevm.c | 219 +++++++++++++++-------------------------------- monitor.c | 11 ++- 4 files changed, 234 insertions(+), 160 deletions(-) -- 2.5.0