[libvirt] [PATCH] virsh: For virsh migrate --tunnelled, use the virDomainMigrateToURI3 API.

Jiri Denemark jdenemar at redhat.com
Thu May 15 10:30:24 UTC 2014


On Thu, May 08, 2014 at 21:49:40 +0100, Richard W.M. Jones wrote:
> Using virsh migrate + the --tunnelled flag causes virsh to use the
> wrong API.  This gives the error:
> 
>   error: use virDomainMigrateToURI3 for peer-to-peer migration
> 
> As the error message is wrong, this patch also corrects the error
> message.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1095924

Right, the error message is wrong but the suggested doesn't seem right
either. The error you should see for virsh migrate --tunnelled is
"cannot perform tunnelled migration without using peer2peer flag". Virsh
should not try to guess that tunnelled implies peer2peer because there's
a possibility someone implements tunnelled migration that transfers data
through the client which controls migration and thus p2p flag would not
be required and virDomainMigrateToURI3 would be a wrong API. Not that
the APIs are designed for that but if I correctly remember discussions
we had about this topic in the past, the goal was virsh should not be
enforcing (or even automatically adding) p2p flag for tunnelled
migrations for better compatibility with future.

> Signed-off-by: Richard W.M. Jones <rjones at redhat.com>
> Cc: Jiri Denemark <jdenemar at redhat.com>
> ---
>  src/libvirt.c        | 2 +-
>  tools/virsh-domain.c | 1 +
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 2cd793c..6a361f6 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -5726,7 +5726,7 @@ virDomainMigrate3(virDomainPtr domain,
>      if (flags & (VIR_MIGRATE_PEER2PEER | VIR_MIGRATE_TUNNELLED)) {
>          virReportInvalidArg(flags, "%s",
>                              _("use virDomainMigrateToURI3 for peer-to-peer "
> -                              "migration"));
> +                              "or tunnelled migration"));
>          goto error;
>      }
>  

In other words, I think we actually want VIR_MIGRATE_TUNNELLED to be
removed from the condition above and just add another condition similar
to what we have in the other migration APIs:

    if (flags & VIR_MIGRATE_TUNNELLED) {
        virReportInvalidArg(flags, "%s",
                            _("cannot perform tunnelled migration "
                              "without using peer2peer flag"));
        goto error;
    }

Jirka




More information about the libvir-list mailing list