[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext |
Date: |
Wed, 11 Sep 2019 12:21:37 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 |
On 9/11/19 11:15 AM, Sergio Lopez wrote:
> On creation, the export's AioContext is set to the same one as the
> BlockBackend, while the AioContext in the client QIOChannel is left
> untouched.
>
> As a result, when using data-plane, nbd_client_receive_next_request()
> schedules coroutines in the IOThread AioContext, while the client's
> QIOChannel is serviced from the main_loop, potentially triggering the
> assertion at qio_channel_restart_[read|write].
>
> To fix this, as soon we have the export corresponding to the client,
> we call qio_channel_attach_aio_context() to attach the QIOChannel
> context to the export's AioContext. This matches with the logic in
> blk_aio_attached().
>
> RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1748253
> Signed-off-by: Sergio Lopez <address@hidden>
> ---
> nbd/server.c | 2 ++
> 1 file changed, 2 insertions(+)
I'd like a second opinion from Kevin, but the description makes sense to
me. I'm happy to queue this through my NBD tree.
Reviewed-by: Eric Blake <address@hidden>
>
> diff --git a/nbd/server.c b/nbd/server.c
> index 10faedcfc5..51322e2343 100644
> --- a/nbd/server.c
> +++ b/nbd/server.c
> @@ -471,6 +471,7 @@ static int nbd_negotiate_handle_export_name(NBDClient
> *client,
> QTAILQ_INSERT_TAIL(&client->exp->clients, client, next);
> nbd_export_get(client->exp);
> nbd_check_meta_export(client);
> + qio_channel_attach_aio_context(client->ioc, client->exp->ctx);
>
> return 0;
> }
> @@ -673,6 +674,7 @@ static int nbd_negotiate_handle_info(NBDClient *client,
> uint16_t myflags,
> QTAILQ_INSERT_TAIL(&client->exp->clients, client, next);
> nbd_export_get(client->exp);
> nbd_check_meta_export(client);
> + qio_channel_attach_aio_context(client->ioc, exp->ctx);
> rc = 1;
> }
> return rc;
>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext, Sergio Lopez, 2019/09/11
- Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext,
Eric Blake <=
- Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext, Eric Blake, 2019/09/11
- Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext, Kevin Wolf, 2019/09/12
- Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext, Sergio Lopez, 2019/09/12
- Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext, Kevin Wolf, 2019/09/12
- Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext, Eric Blake, 2019/09/16
Re: [Qemu-devel] [PATCH] nbd/server: attach client channel to the export's AioContext, Kevin Wolf, 2019/09/12