[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 0/3] nonblocking connect address handling cle
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH v3 0/3] nonblocking connect address handling cleanup |
Date: |
Thu, 20 Sep 2012 18:15:23 +0300 |
On Thu, Sep 20, 2012 at 05:55:14PM +0300, Orit Wasserman wrote:
> On 09/20/2012 04:19 PM, Markus Armbruster wrote:
> > Orit Wasserman <address@hidden> writes:
> >
> >> Changes from v2:
> >> - remove the use of getnameinfo
> >> - remove errp for inet_connect_addr
> >> - remove QemuOpt "block"
> >> - fix errors in wait_for_connect
> >> - pass ConnectState as a parameter to allow concurrent connect ops
> >>
> >> getaddrinfo can give us a list of addresses, but we only try to
> >> connect to the first one. If that fails we never proceed to
> >> the next one. This is common on desktop setups that often have ipv6
> >> configured but not actually working.
> >> A simple way to reproduce the problem is migration:
> >> for the destination use -incoming tcp:0:4444, run migrate -d
> >> tcp:localhost:4444
> >> migration will fail on hosts that have both IPv4 and IPV6 address for
> >> localhost.
> >>
> >> To fix this, refactor address resolution code and make
> >> inet_nonblocking_connect
> >> retry connection with a different address.
> >
> > Almost there for connect.
> >
> > I'm afraid we have a similar problem with listen: we bind only on the
> > first address that works. Shouldn't we bind all of them?
> >
> > http://www.akkadia.org/drepper/userapi-ipv6.html
> >
> yes listen should be fixed but lets do it in a separate patch set.
>
> Orit
One useful hack is to set AI_ADDRCONFIG hint, this way
you don't get ipv6 addresses if your system does not
have any configured, this results in faster connections
on some boxes.
http://linux.die.net/man/3/getaddrinfo
This probably should be a separate patch too,
if for no other reason than that it makes failures
in connect much harder to trigger and test.
--
MST
- Re: [Qemu-devel] [PATCH v3 3/3] Fix address handling in inet_nonblocking_connect, (continued)
[Qemu-devel] [PATCH v3 2/3] Separate inet_connect into inet_connect (blocking) and inet_nonblocking_connect, Orit Wasserman, 2012/09/13
Re: [Qemu-devel] [PATCH v3 0/3] nonblocking connect address handling cleanup, Markus Armbruster, 2012/09/20