qemu: fix race between disk mirror fail and cancel
qemu: fix race between disk mirror fail and cancel

If a VM migration is aborted, a disk mirror may be failed by QEMU before
libvirt has a chance to cancel it. The disk->mirrorState remains at
_ABORT in this case, and this breaks subsequent mirrorings of that disk.

We should instead check the mirrorState directly and transition to _NONE
if it is already aborted. Do the check *after* aborting the block job in
QEMU to avoid a race.

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

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