diff mbox

[1/8] nbd: client_close on error in nbd_co_client_start

Message ID 1453747275-9468-2-git-send-email-mreitz@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Max Reitz Jan. 25, 2016, 6:41 p.m. UTC
Use client_close() if an error in nbd_co_client_start() occurs instead
of manually inlining parts of it. This fixes an assertion error on the
server side if nbd_negotiate() fails.

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 nbd/server.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Eric Blake Jan. 25, 2016, 8:26 p.m. UTC | #1
On 01/25/2016 11:41 AM, Max Reitz wrote:
> Use client_close() if an error in nbd_co_client_start() occurs instead
> of manually inlining parts of it. This fixes an assertion error on the
> server side if nbd_negotiate() fails.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  nbd/server.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Reviewed-by: Eric Blake <eblake@redhat.com>
Daniel P. Berrangé Jan. 25, 2016, 10:05 p.m. UTC | #2
On Mon, Jan 25, 2016 at 07:41:08PM +0100, Max Reitz wrote:
> Use client_close() if an error in nbd_co_client_start() occurs instead
> of manually inlining parts of it. This fixes an assertion error on the
> server side if nbd_negotiate() fails.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  nbd/server.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/nbd/server.c b/nbd/server.c
> index 2265cb0..5169b59 100644
> --- a/nbd/server.c
> +++ b/nbd/server.c
> @@ -1080,8 +1080,7 @@ static coroutine_fn void nbd_co_client_start(void *opaque)
>          nbd_export_get(exp);
>      }
>      if (nbd_negotiate(data)) {
> -        shutdown(client->sock, 2);
> -        client->close(client);
> +        client_close(client);
>          goto out;
>      }
>      qemu_co_mutex_init(&client->send_lock);

The same as my fix last week :-)

https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg03409.html

Regards,
Daniel
Kevin Wolf Jan. 26, 2016, 9:32 a.m. UTC | #3
Am 25.01.2016 um 19:41 hat Max Reitz geschrieben:
> Use client_close() if an error in nbd_co_client_start() occurs instead
> of manually inlining parts of it. This fixes an assertion error on the
> server side if nbd_negotiate() fails.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>

Paolo, if you can Ack this one, I can take the series through my tree.

Kevin

>  nbd/server.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/nbd/server.c b/nbd/server.c
> index 2265cb0..5169b59 100644
> --- a/nbd/server.c
> +++ b/nbd/server.c
> @@ -1080,8 +1080,7 @@ static coroutine_fn void nbd_co_client_start(void *opaque)
>          nbd_export_get(exp);
>      }
>      if (nbd_negotiate(data)) {
> -        shutdown(client->sock, 2);
> -        client->close(client);
> +        client_close(client);
>          goto out;
>      }
>      qemu_co_mutex_init(&client->send_lock);
> -- 
> 2.7.0
>
Paolo Bonzini Jan. 26, 2016, 9:33 a.m. UTC | #4
On 26/01/2016 10:32, Kevin Wolf wrote:
> Am 25.01.2016 um 19:41 hat Max Reitz geschrieben:
>> > Use client_close() if an error in nbd_co_client_start() occurs instead
>> > of manually inlining parts of it. This fixes an assertion error on the
>> > server side if nbd_negotiate() fails.
>> > 
>> > Signed-off-by: Max Reitz <mreitz@redhat.com>
> Paolo, if you can Ack this one, I can take the series through my tree.

Of course.  I had the same patch queued from Daniel.

Acked-by: Paolo Bonzini <pbonzini@redhat.com>

Paolo
Max Reitz Jan. 27, 2016, 3:12 p.m. UTC | #5
On 25.01.2016 23:05, Daniel P. Berrange wrote:
> On Mon, Jan 25, 2016 at 07:41:08PM +0100, Max Reitz wrote:
>> Use client_close() if an error in nbd_co_client_start() occurs instead
>> of manually inlining parts of it. This fixes an assertion error on the
>> server side if nbd_negotiate() fails.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>  nbd/server.c | 3 +--
>>  1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/nbd/server.c b/nbd/server.c
>> index 2265cb0..5169b59 100644
>> --- a/nbd/server.c
>> +++ b/nbd/server.c
>> @@ -1080,8 +1080,7 @@ static coroutine_fn void nbd_co_client_start(void *opaque)
>>          nbd_export_get(exp);
>>      }
>>      if (nbd_negotiate(data)) {
>> -        shutdown(client->sock, 2);
>> -        client->close(client);
>> +        client_close(client);
>>          goto out;
>>      }
>>      qemu_co_mutex_init(&client->send_lock);
> 
> The same as my fix last week :-)
> 
> https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg03409.html

Oops, sorry. I guess that at least shows that the fix is probably good. O:-)

Max
diff mbox

Patch

diff --git a/nbd/server.c b/nbd/server.c
index 2265cb0..5169b59 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -1080,8 +1080,7 @@  static coroutine_fn void nbd_co_client_start(void *opaque)
         nbd_export_get(exp);
     }
     if (nbd_negotiate(data)) {
-        shutdown(client->sock, 2);
-        client->close(client);
+        client_close(client);
         goto out;
     }
     qemu_co_mutex_init(&client->send_lock);