
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