On 16.04.2015 11:24, Michael Chapman wrote:
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
ACK series.
Even though this is rather big patch set, it fixes important bug.
Therefore I'm pushing this now. Thanks for chasing the problem down.
Michal