qemu: migration: use sync block job helpers
qemu: migration: use sync block job helpers

In qemuMigrationDriveMirror we can start all disk mirrors in parallel.
We wait until they are all ready, or one of them aborts.

In qemuMigrationCancelDriveMirror, we wait until all mirrors are
properly stopped. This is necessary to ensure that destination VM is
fully in sync with the (paused) source VM.

If a drive mirror can not be cancelled, then the destination is not in a
consistent state. In this case it is not safe to continue with the
migration.

Signed-off-by: Michael Chapman <a17fed27eaa842282862ff7c1b9c8395a26ac320@very.puzzling.org>

eskultety/libvirt,andreabolognani/libvirt,agx/libvirt,VenkatDatta/libvirt,crobinso/libvirt,fabianfreyer/libvirt,taget/libvirt,eskultety/libvirt,jardasgit/libvirt,datto/libvirt,jardasgit/libvirt,VenkatDatta/libvirt,olafhering/libvirt,zippy2/libvirt,agx/libvirt,fabianfreyer/libvirt,jardasgit/libvirt,rlaager/libvirt,jardasgit/libvirt,andreabolognani/libvirt,datto/libvirt,crobinso/libvirt,olafhering/libvirt,fabianfreyer/libvirt,olafhering/libvirt,libvirt/libvirt,eskultety/libvirt,fabianfreyer/libvirt,libvirt/libvirt,taget/libvirt,nertpinx/libvirt,rlaager/libvirt,rlaager/libvirt,VenkatDatta/libvirt,nertpinx/libvirt,olafhering/libvirt,jfehlig/libvirt,crobinso/libvirt,jfehlig/libvirt,andreabolognani/libvirt,datto/libvirt,eskultety/libvirt,nertpinx/libvirt,taget/libvirt,datto/libvirt,nertpinx/libvirt,zippy2/libvirt,agx/libvirt,rlaager/libvirt,agx/libvirt,fabianfreyer/libvirt,eskultety/libvirt,andreabolognani/libvirt,jardasgit/libvirt,crobinso/libvirt,andreabolognani/libvirt,libvirt/libvirt,nertpinx/libvirt,taget/libvirt,taget/libvirt,zippy2/libvirt,jfehlig/libvirt,datto/libvirt,libvirt/libvirt,jfehlig/libvirt,rlaager/libvirt,agx/libvirt,VenkatDatta/libvirt,VenkatDatta/libvirt,zippy2/libvirt