QEMU will soon get support for migration events which will finally allows us to get rid of polling query-migrate every 50ms. However, we first need to be able to wait for all events related to migration (migration status changes, block job events, async abort requests) at once. This series prepares the infrastructure which will allows us to do it (patches 1 and 2) and then makes use of it for block job events (patch 4) and abort requests (patch 10). Patch 8 fixes a bug in migration recovery after libvirtd restarts. The rest of the patches are mostly cleanups or bugfixes or other small changes required by the 5 main patches. Jiri Denemark (10): util: Introduce thread queues thread: Create thread local condition for every thread qemu: Introduce qemuBlockJobUpdate qemu: Properly report failed migration qemu: Use thread queues for synchronous block jobs qemu: Don't mess up with disk->mirrorState Pass domain object to private data formatter/parser qemu: Make qemuMigrationCancelDriveMirror usable without async job qemu: Cancel disk mirrors after libvirtd restart qemu: Use thread queues for asyncAbort po/POTFILES.in | 2 +- src/Makefile.am | 2 + src/conf/domain_conf.c | 4 +- src/conf/domain_conf.h | 6 +- src/libvirt_private.syms | 17 ++ src/libxl/libxl_domain.c | 10 +- src/lxc/lxc_domain.c | 12 +- src/qemu/qemu_blockjob.c | 177 +++++---------------- src/qemu/qemu_blockjob.h | 15 +- src/qemu/qemu_domain.c | 97 +++++++++--- src/qemu/qemu_domain.h | 8 +- src/qemu/qemu_driver.c | 24 ++- src/qemu/qemu_migration.c | 392 +++++++++++++++++++++++++++++----------------- src/qemu/qemu_migration.h | 3 + src/qemu/qemu_process.c | 17 +- src/util/virthread.c | 21 ++- src/util/virthreadqueue.c | 343 ++++++++++++++++++++++++++++++++++++++++ src/util/virthreadqueue.h | 54 +++++++ 18 files changed, 841 insertions(+), 363 deletions(-) create mode 100644 src/util/virthreadqueue.c create mode 100644 src/util/virthreadqueue.h -- 2.4.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list