Il 30/11/2013 16:49, Marc-André Lureau ha scritto:
> So you suggest this block/unblock: (I haven't reviewed all callers of
> unix_connect_opts(), I am not sure that's what you meant) Other option
> would be to move the nonblock to unix_socket_outgoing.
> 
> diff --git a/block/nbd-client.c b/block/nbd-client.c
> index 1abfc6a..693110d 100644
> --- a/block/nbd-client.c
> +++ b/block/nbd-client.c
> @@ -348,6 +348,7 @@ int nbd_client_session_init(NbdClientSession *client,
>      int ret;
> 
>      /* NBD handshake */
> +    qemu_set_block(sock);
>      ret = nbd_receive_negotiate(sock, client->export_name,
>                                  &client->nbdflags, &client->size,
>                                  &client->blocksize);

Also

 qemu_set_nonblock(sock);

here, and remove it from nbd_receive_negotiate.

I checked again and you need not touch unix_connect_opts, nor
nbd_client_thread.

Paolo

Reply via email to