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