From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54778) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEiSB-0008IJ-Ob for qemu-devel@nongnu.org; Thu, 20 Sep 2012 11:14:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEiS5-0001RF-FR for qemu-devel@nongnu.org; Thu, 20 Sep 2012 11:14:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53166) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEiS5-0001RA-6m for qemu-devel@nongnu.org; Thu, 20 Sep 2012 11:14:05 -0400 Date: Thu, 20 Sep 2012 18:15:23 +0300 From: "Michael S. Tsirkin" Message-ID: <20120920151523.GA14320@redhat.com> References: <1347562697-15411-1-git-send-email-owasserm@redhat.com> <87r4pwzv9f.fsf@blackfin.pond.sub.org> <505B2E52.8010702@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <505B2E52.8010702@redhat.com> Subject: Re: [Qemu-devel] [PATCH v3 0/3] nonblocking connect address handling cleanup List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Orit Wasserman Cc: kwolf@redhat.com, aliguori@us.ibm.com, akong@redhat.com, quintela@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, Markus Armbruster , pbonzini@redhat.com, lcapitulino@redhat.com 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 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