
Il 28/03/2014 12:30, Dr. David Alan Gilbert ha scritto:
Another reason for doing it in libvirt is that the serialization between cancellation and completion of migration ultimately is controlled by libvirt's lock. Doing this in QEMU makes it harder to reason about concurrency. I think you have to be careful when you talk about 'cancellation and completion of migration' - in that paragraph I don't think you mean the same thing as MIG_STATE_CANCELLED and MIG_STATE_COMPLETED, I think you're talking about the larger scale idea of completion after you take into account that the VM might be paused after qemu has gone to MIG_STATE_COMPLETED and libvirt might still decide it wants to give up and use the version on the source that's still paused.
Yes, exactly. This is why I considered the possibility of adding a "cancelled" flag within libvirt. Libvirt always uses -S on the destination, so it's always possible to cancel migration even after MIG_STATE_COMPLETED. Paolo