qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 07/18] migration: make writes blocking


From: Juan Quintela
Subject: Re: [Qemu-devel] [PATCH 07/18] migration: make writes blocking
Date: Mon, 29 Oct 2012 18:32:00 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux)

Markus Armbruster <address@hidden> wrote:
> Juan Quintela <address@hidden> writes:
>
>> Move all the writes to the migration_thread, and make writings
>> blocking.  Notice that are still using the iothread for everything
>> that we do.
> [...]
>> diff --git a/qemu-sockets.c b/qemu-sockets.c
>> index cfed9c5..61b6e95 100644
>> --- a/qemu-sockets.c
>> +++ b/qemu-sockets.c
>> @@ -276,9 +276,6 @@ static int inet_connect_addr(struct addrinfo *addr, bool 
>> *in_progress,
>>          return -1;
>>      }
>>      qemu_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
>> -    if (connect_state != NULL) {
>> -        socket_set_nonblock(sock);
>> -    }
>>      /* connect to peer */
>>      do {
>>          rc = 0;
>> @@ -732,7 +729,6 @@ int unix_connect_opts(QemuOpts *opts, Error **errp,
>>          connect_state = g_malloc0(sizeof(*connect_state));
>>          connect_state->callback = callback;
>>          connect_state->opaque = opaque;
>> -        socket_set_nonblock(sock);
>>      }
>>
>>      memset(&un, 0, sizeof(un));
>
> Doesn't this break inet_nonblocking_connect() and
> unix_nonblocking_connect()?
>
> In your cover letter, you wrote:
>
>     Note: Writes has become blocking, and I have to change the "remove"
>     the feature now in qemu-sockets.c.  Checked that migration was the
>     only user of that feature.  If new users appear, they just need to add
>     the socket_set_nonblock() by hand.
>
> Yes, migration-{tcp,unix} are their only users, but if they want a
> blocking socket now, why not use inet_connect() and unix_connect()?
>
> New users can't "just add socket_set_nonblock()".  They'd have to add it
> right where you deleted it: between qemu_socket() and connect().  Else
> the connect() is blocking.

Grrr.

So, is there any way to make a connection that is non-blocking, but then
writes are blocking?

Later, Juan.



reply via email to

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