qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 09/13] nbd: don't change socket block during neg


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 09/13] nbd: don't change socket block during negotiate
Date: Fri, 29 Nov 2013 16:22:58 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9

Il 29/11/2013 15:58, Marc-André Lureau ha scritto:
> From: Marc-André Lureau <address@hidden>
> 
> The caller might handle non-blocking using coroutine. Leave the choice
> to the caller to use a blocking or non-blocking negotiate.
> 
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
>  nbd.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/nbd.c b/nbd.c
> index f847940..3af9d17 100644
> --- a/nbd.c
> +++ b/nbd.c
> @@ -443,7 +443,6 @@ int nbd_receive_negotiate(int csock, const char *name, 
> uint32_t *flags,
>  
>      TRACE("Receiving negotiation.");
>  
> -    qemu_set_block(csock);
>      rc = -EINVAL;
>  
>      if (read_sync(csock, buf, 8) != 8) {
> 

If you remove this here, you need to remove also the matching
socket_set_nonblock,

Also, there are two callers:

- nbd.c: you can add nbd_socket_block/nonblock around
nbd_receive_negotiate in nbd_open.

- qemu-nbd.c: here the socket can remain in blocking mode.  In fact it
is blocking before the call to nbd_receive_negotiate, because
unix_connect_opts is missing a call to qemu_set_block (bug!).  I suggest
that you add the call to qemu_set_nonblock there, and add qemu_set_block
in nbd_client_thread.

Thanks,

Paolo



reply via email to

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