[libvirt] [PATCH 0/5] Use synchronous block job events in qemu_migration

Michael Chapman mike at very.puzzling.org
Thu Apr 16 09:24:18 UTC 2015


This patch series converts qemu_migration to use the synchronous block job
event code introduced in commit 630ee5ac.

It fixes two problems:

- Drive mirroring has been broken since that commit, since the event
  indicating mirror readiness isn't processed while the VM object is locked.
- Migration did not wait until the drive mirrors were properly cancelled,
  and this could cause disk corruption.

Patch 1 moves qemuBlockJobEventProcess into a separate source file so it can
be used by both qemu_driver and qemu_migration. Patch 2 introduces new
qemuBlockJobSync* help functions to manage a synchronous block job. Patch 3
ensures that a thread waiting on a synchronous block job event is woken up
should the domain crash. Patches 4 and 5 use the new synchronous block job
helpers in qemu_driver and qemu_migration respectively.

Michael Chapman (5):
  qemuBlockJobEventProcess: move to new source file
  qemuBlockJobSync*: introduce sync block job helpers
  qemuProcessStop: wake up pending sync block jobs
  qemuDomainBlockJobAbort: use sync block job helpers
  qemu: migration: use sync block job helpers

 po/POTFILES.in            |   1 +
 src/Makefile.am           |   1 +
 src/qemu/qemu_blockjob.c  | 331 ++++++++++++++++++++++++++++++++++
 src/qemu/qemu_blockjob.h  |  49 ++++++
 src/qemu/qemu_driver.c    | 174 +++---------------
 src/qemu/qemu_migration.c | 439 ++++++++++++++++++++++++++++------------------
 src/qemu/qemu_process.c   |   7 +
 7 files changed, 676 insertions(+), 326 deletions(-)
 create mode 100644 src/qemu/qemu_blockjob.c
 create mode 100644 src/qemu/qemu_blockjob.h

-- 
2.1.0




More information about the libvir-list mailing list