Paolo Bonzini wrote:
Currently, the QEMU driver tries to migrate paused VMs, but the
effect is that the migrated virtual machine will always run on the
destination.
Furthermore, the state is erroneously stored as paused, so that the
driver is left confused and it is not possible to re-pause the VM
without doing a (useless except to make the libvirtd state consistent)
"virsh resume" first.
While pausing is not very used, this feature is still nice-to-have
in case for example you're migrating all VMs in emergency, or (when
QEMU will have asynchronous notifications) if you want to run QEMU
with the werror=stop option (*).
This set of patches is structured as follows:
1) patches 1 and 2 fix two bugs that were introduced by the recent
reorganization.
2) patch 3 fixes a bug that happens to be in the paths touched later on;
3) patch 4 adds the possibility to migrate a VM and leave it suspended
on the destination VM. I added the feature for debugging and thought I
might as well submit it for inclusion. Especially if the last two
patches turn out to be a no-go (at least in their current form), this
patch at least provides the infrastructure and a way to test it.
4) patches 5 and 6 actually fix the bug. Unfortunately, this requires
a change to the RPC protocol. I'm not sure whether it is required the
libvirtd's on both sides of the migration to have the same version,
or rather if this is a deal breaker.
The change to the protocol is in patch 5; the bug fix is in patch 6.
Please review and ack (or, for the last two, nack).
Paolo
(*) While the state of the migrated VM is currently fetched at the
beginning of migration, the communication happens at the end of it
(from Perform to Finish), so this is ready for being improved in
the future once QEMU provides asynchronous notifications.
I haven't reviewed the actual code yet, but I like the idea. Unfortunately this
patch series is going to clash horribly with the tunnelled migration code that
I'm going to commit today, so I'd suggest waiting until I commit, rebasing, and
then reposting.
--
Chris Lalancette