[libvirt] [PATCH 0/6] correctly migrate paused VMs (and a bunch of bugfixes)

Paolo Bonzini pbonzini at redhat.com
Thu Oct 1 18:18:27 UTC 2009


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.





More information about the libvir-list mailing list