From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55996) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TGqsS-0000zr-5a for qemu-devel@nongnu.org; Wed, 26 Sep 2012 08:38:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TGqsN-0002R9-TO for qemu-devel@nongnu.org; Wed, 26 Sep 2012 08:38:08 -0400 Received: from e4.ny.us.ibm.com ([32.97.182.144]:37245) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TGqsN-0002Qf-P8 for qemu-devel@nongnu.org; Wed, 26 Sep 2012 08:38:03 -0400 Received: from /spool/local by e4.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 26 Sep 2012 08:38:01 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q8QCbugv33292348 for ; Wed, 26 Sep 2012 08:37:56 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q8QCbusE028329 for ; Wed, 26 Sep 2012 08:37:56 -0400 From: Anthony Liguori In-Reply-To: <1348485070-8190-1-git-send-email-owasserm@redhat.com> References: <1348485070-8190-1-git-send-email-owasserm@redhat.com> Date: Wed, 26 Sep 2012 07:37:50 -0500 Message-ID: <87bogtrmch.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] [PATCH v5 0/4] non-blocking connect address handling cleanup List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Orit Wasserman , qemu-devel@nongnu.org Cc: kwolf@redhat.com, quintela@redhat.com, armbru@redhat.com, mst@redhat.com, mdroth@linux.vnet.ibm.com, lcapitulino@redhat.com, pbonzini@redhat.com, akong@redhat.com Orit Wasserman writes: > Changes from v4: > - Rename ConnectHandler to NonBlockingConnectHandler > - move function comments to functions definitions > - move connect_state allocation to outside of the loop > - fix comments text > > Changes from v3: > - add missing parenthesis QEMU_SOCKET_RC_INPROGRESS macro > - remove "block" from dummy_opts > - remove in_progress from external API (inet_connect_opts and > inet_nonblocking_connect) > - Allocate ConnectState inside inet_connect_opts, this make the > structure internal to qemu-sockets.c > - fix migrate_fd_cleanup to handle invalid fd. > > 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. > > Michael S. Tsirkin (1): > Refactor inet_connect_opts function > > Orit Wasserman (3): > Separate inet_connect into inet_connect (blocking) and > inet_nonblocking_connect > Fix address handling in inet_nonblocking_connect > Clear handler only for valid fd > > migration-tcp.c | 37 ++------ > migration.c | 4 +- > nbd.c | 2 +- > qemu-char.c | 2 +- > qemu-sockets.c | 279 +++++++++++++++++++++++++++++++++++++++++-------------- > qemu_socket.h | 15 +++- > ui/vnc.c | 2 +- > 7 files changed, 237 insertions(+), 104 deletions(-) Applied. Thanks. Regards, Anthony Liguori > > -- > 1.7.7.6