All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org, lvivier@redhat.com, dgilbert@redhat.com,
	peterx@redhat.com
Subject: Re: [Qemu-devel] [PATCH 5/6] migration: Now set the migration uri
Date: Wed, 22 Nov 2017 12:54:58 +0000	[thread overview]
Message-ID: <20171122125458.GE29565@redhat.com> (raw)
In-Reply-To: <873756pkca.fsf@secure.mitica>

On Wed, Nov 22, 2017 at 01:29:57PM +0100, Juan Quintela wrote:
> "Daniel P. Berrange" <berrange@redhat.com> wrote:
> > On Mon, Oct 30, 2017 at 12:21:11PM +0100, Juan Quintela wrote:
> >> Signed-off-by: Juan Quintela <quintela@redhat.com>
> >> ---
> >>  migration/migration.c | 25 ++++++++++++++++++-------
> >>  migration/migration.h |  2 ++
> >>  migration/socket.c    |  7 +++++++
> >>  3 files changed, 27 insertions(+), 7 deletions(-)
> >
> >
> >> diff --git a/migration/socket.c b/migration/socket.c
> >> index 3a8232dd2d..c3ab81d1fb 100644
> >> --- a/migration/socket.c
> >> +++ b/migration/socket.c
> >> @@ -187,7 +187,14 @@ void tcp_start_incoming_migration(const char *host_port, Error **errp)
> >>      Error *err = NULL;
> >>      SocketAddress *saddr = tcp_build_address(host_port, &err);
> >>      if (!err) {
> >> +        char *new_uri;
> >>          socket_start_incoming_migration(saddr, &err);
> >> +        if (!err) {
> >> +            new_uri = g_strdup_printf("tcp:%s:%s", saddr->u.inet.host,
> >> +                                      saddr->u.inet.port);
> >
> > This is bad as it is throwing away data that the original URI had. In particular
> > you loose the 'ipv4=on|off' and 'ipv6=on|off' flags. If you need to keep the
> > original URI for later, then why not just keep the 'host_port' parameter that
> > was passed into this function instead of trying to reverse engineeer the URI ?
> 
> I don't need the original uri anymore, this is the incoming side of
> migration, and we can only set that once, if migration fails, we need to
> restart qemu anymore.
> 
> I changed it to this:
> 
>             new_uri = g_strdup_printf("tcp:%s:%s%s%s", address->u.inet.host,
>                                       address->u.inet.port,
>                                       iaddr->has_ipv4 ? ",ipv4" : "",
>                                       iaddr->has_ipv6 ? ",ipv6" : "");
> 
> 
> Clearly, we don't care about the to= parameter.
> 
> The whole point of this exercise is that in destination, we use
> 
> -incoming tcp:0:0
> 
> and with the output of info migrate_parameters (uri) we are able to
> migrate to that place.  For rest of migration posibilities, there is no
> changes at all.

That doesn't work typically. When the incoming QEMU listens for connections,
by default it will listen on 0.0.0.0, or ::, so that's what the address
you're creating will contain.  You can't use 0.0.0.0 or :: in a connect()
call on the other side as that's a wildcard address that refers to "any 
valid IP address on the current host".

When you connect to the listening QEMU you need the actual IP address
of one (of the possibly many) NICs on the target host.  IOW, the only
time the listen address is useful is if you have told QEMU to listen on
a specific NIC's IP address, instead of the wildcard address.

This is the core reason why libvirt calls 'gethostname()' on the target
host to identify the primary IP address of the host, and uses that on the
source host to establish the connection.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

  reply	other threads:[~2017-11-22 12:55 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-30 11:21 [Qemu-devel] [PATCH 0/6] Improve info migrate output on destination Juan Quintela
2017-10-30 11:21 ` [Qemu-devel] [PATCH 1/6] qio: Make port 0 work for qio Juan Quintela
2017-10-30 20:48   ` Daniel P. Berrange
2017-11-03  9:23     ` Juan Quintela
2017-10-30 11:21 ` [Qemu-devel] [PATCH 2/6] migration: print features as on off Juan Quintela
2017-11-03 13:23   ` Dr. David Alan Gilbert
2017-11-08  8:13   ` Peter Xu
2017-10-30 11:21 ` [Qemu-devel] [PATCH 3/6] migration: free addr in the same function that we created it Juan Quintela
2017-11-08  8:15   ` Peter Xu
2017-10-30 11:21 ` [Qemu-devel] [PATCH 4/6] migration: Create uri parameter Juan Quintela
2017-10-30 11:21 ` [Qemu-devel] [PATCH 5/6] migration: Now set the migration uri Juan Quintela
2017-11-03 10:07   ` Daniel P. Berrange
2017-11-22 12:29     ` Juan Quintela
2017-11-22 12:54       ` Daniel P. Berrange [this message]
2017-11-22 12:58         ` Daniel P. Berrange
2017-11-29 16:43           ` Juan Quintela
2017-11-29 16:48             ` Daniel P. Berrange
2017-10-30 11:21 ` [Qemu-devel] [PATCH 6/6] migration: make migrate uri parameter optional Juan Quintela
2017-10-30 13:02 ` [Qemu-devel] [PATCH 0/6] Improve info migrate output on destination Fam Zheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171122125458.GE29565@redhat.com \
    --to=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.