On Wed, Nov 25, 2009 at 04:40:08PM +0100, Paolo Bonzini wrote:
> This patch fixes the bug where paused/running state is not
> transmitted during migration.  As a result, in the QEMU driver
> for example the machine was always started on the destination
> end.
> 
> In order to do so, I just read the state and if it is appropriate
> I set the VIR_MIGRATE_PAUSED flag.
> 
> * src/libvirt.c (virDomainMigrateVersion1, virDomainMigrateVersion2):
> Automatically add VIR_MIGRATE_PAUSED when appropriate.
> * src/xen/xend_internal.c (xenDaemonDomainMigratePerform): Give a nicer
> error message when migration of paused virtual machines is attempted.
> ---
>  src/libvirt.c           |   12 ++++++++++++
>  src/xen/xend_internal.c |    9 +++++++++
>  2 files changed, 21 insertions(+), 0 deletions(-)
> 
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 2ced604..9d03e13 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -2964,6 +2964,12 @@ virDomainMigrateVersion1 (virDomainPtr domain,
>      char *uri_out = NULL;
>      char *cookie = NULL;
>      int cookielen = 0;
> +    virDomainInfo info;
> +
> +    virDomainGetInfo (domain, &info);
> +    if (info.state == VIR_DOMAIN_PAUSED) {
> +        flags |= VIR_MIGRATE_PAUSED;
> +    }

There's a non-trivial chance of virDomainGetInfo failing so I
think we should check return value here Also, since we now have
the state, we might as well also short-circuit shutoff domains

  if (info.state == VIR_DOMAIN_SHUTOFF)
    ...cannot migrate inactive domains...


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to