qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 0/4] non-blocking connect address handling cl


From: Orit Wasserman
Subject: Re: [Qemu-devel] [PATCH v5 0/4] non-blocking connect address handling cleanup
Date: Mon, 24 Sep 2012 16:37:17 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120827 Thunderbird/15.0

On 09/24/2012 04:36 PM, Michael S. Tsirkin wrote:
> On Mon, Sep 24, 2012 at 01:11:06PM +0200, Orit Wasserman wrote:
>> 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.
> 
> Acked-by: Michael S. Tsirkin <address@hidden>
> 
> More ideas if you feel like touching this code some more:
> - fix listen side: drop ADDRCONF hint and ideally make
>   it address independent
> - enhance error handling so async connect errors propagate to
>   monitor somehow
I working on the second :) 
> 
>> 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(-)
>>
>> -- 
>> 1.7.7.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]