All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: "Stefan Hajnoczi" <stefanha@redhat.com>,
	qemu-devel@nongnu.org,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Vladimir Sementsov-Ogievskiy" <vsementsov@yandex-team.ru>,
	"Cleber Rosa" <crosa@redhat.com>,
	"Xie Changlong" <xiechanglong.d@gmail.com>,
	"Paul Durrant" <paul@xen.org>, "Ari Sundholm" <ari@tuxera.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Eric Blake" <eblake@redhat.com>, "John Snow" <jsnow@redhat.com>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Wen Congyang" <wencongyang2@huawei.com>,
	"Alberto Garcia" <berto@igalia.com>,
	"Anthony Perard" <anthony.perard@citrix.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	qemu-block@nongnu.org, "Juan Quintela" <quintela@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Coiby Xu" <Coiby.Xu@gmail.com>,
	"Fabiano Rosas" <farosas@suse.de>,
	"Hanna Reitz" <hreitz@redhat.com>,
	"Zhang Chen" <chen.zhang@intel.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
	"Peter Xu" <peterx@redhat.com>,
	"Emanuele Giuseppe Esposito" <eesposit@redhat.com>,
	"Fam Zheng" <fam@euphon.net>,
	"Leonardo Bras" <leobras@redhat.com>,
	"David Hildenbrand" <david@redhat.com>,
	"Li Zhijian" <lizhijian@fujitsu.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 04/14] aio: make aio_context_acquire()/aio_context_release() a no-op
Date: Wed, 20 Dec 2023 10:32:21 +0100	[thread overview]
Message-ID: <ZYK0pUSPFQiU4Qs_@redhat.com> (raw)
In-Reply-To: <CAJSP0QX0fg0TGWuveJz6+QbF9EmY=vPiU-c99fHZMN=1jAnXkw@mail.gmail.com>

Am 19.12.2023 um 22:23 hat Stefan Hajnoczi geschrieben:
> The following hack makes the test pass but there are larger safety
> issues that I'll need to look at on Wednesday:

I see, you're taking the same approach as in the SCSI layer: Don't make
things thread-safe, but just always access them from the same thread.

In theory this should be okay, but I'm almost sure that at least
nbd_drained_poll() must then run in the same AioContext, too.

> diff --git a/nbd/server.c b/nbd/server.c
> index 895cf0a752..cf4b7d5c6d 100644
> --- a/nbd/server.c
> +++ b/nbd/server.c
> @@ -1617,7 +1617,7 @@ static void nbd_drained_begin(void *opaque)
>      }
>  }
> 
> -static void nbd_drained_end(void *opaque)
> +static void nbd_resume_clients(void *opaque)
>  {
>      NBDExport *exp = opaque;
>      NBDClient *client;
> @@ -1628,6 +1628,15 @@ static void nbd_drained_end(void *opaque)
>      }
>  }
> 
> +static void nbd_drained_end(void *opaque)
> +{
> +    NBDExport *exp = opaque;
> +
> +    /* TODO how to make sure exp doesn't go away? */

blk_exp_ref()?

> +    /* TODO what if AioContext changes before this runs? */
> +    aio_bh_schedule_oneshot(nbd_export_aio_context(exp),
> nbd_resume_clients, exp);

We could increase client->nb_requests if we change it to be accessed
atomically. Then nbd_drained_poll() will make any AioContext change wait
for the BH.

Or maybe aio_wait_bh_oneshot() would already solve both problems?

> +}
> +

Kevin



  reply	other threads:[~2023-12-20  9:32 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-05 18:19 [PATCH v2 00/14] aio: remove AioContext lock Stefan Hajnoczi
2023-12-05 18:19 ` [PATCH v2 01/14] virtio-scsi: replace AioContext lock with tmf_bh_lock Stefan Hajnoczi
2023-12-05 18:19 ` [PATCH v2 02/14] scsi: assert that callbacks run in the correct AioContext Stefan Hajnoczi
2023-12-18 15:35   ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 03/14] tests: remove aio_context_acquire() tests Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 04/14] aio: make aio_context_acquire()/aio_context_release() a no-op Stefan Hajnoczi
2023-12-19 15:28   ` Kevin Wolf
2023-12-19 18:19     ` Kevin Wolf
2023-12-19 21:23       ` Stefan Hajnoczi
2023-12-20  9:32         ` Kevin Wolf [this message]
2023-12-20 13:40           ` Stefan Hajnoczi
2023-12-21  0:30       ` Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 05/14] graph-lock: remove AioContext locking Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 06/14] block: " Stefan Hajnoczi
2023-12-19 15:58   ` Kevin Wolf
2023-12-19 20:04     ` Stefan Hajnoczi
2023-12-20  9:19       ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 07/14] block: remove bdrv_co_lock() Stefan Hajnoczi
2023-12-18 15:35   ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 08/14] scsi: remove AioContext locking Stefan Hajnoczi
2023-12-18 15:35   ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 09/14] aio-wait: draw equivalence between AIO_WAIT_WHILE() and AIO_WAIT_WHILE_UNLOCKED() Stefan Hajnoczi
2023-12-18 15:35   ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 10/14] aio: remove aio_context_acquire()/aio_context_release() API Stefan Hajnoczi
2023-12-18 15:36   ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 11/14] docs: remove AioContext lock from IOThread docs Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 12/14] scsi: remove outdated AioContext lock comment Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 13/14] job: remove outdated AioContext locking comments Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 14/14] block: " Stefan Hajnoczi
2023-12-19 12:11   ` Kevin Wolf
2023-12-19 13:03 ` [PATCH v2 00/14] aio: remove AioContext lock Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZYK0pUSPFQiU4Qs_@redhat.com \
    --to=kwolf@redhat.com \
    --cc=Coiby.Xu@gmail.com \
    --cc=anthony.perard@citrix.com \
    --cc=ari@tuxera.com \
    --cc=berrange@redhat.com \
    --cc=berto@igalia.com \
    --cc=chen.zhang@intel.com \
    --cc=crosa@redhat.com \
    --cc=david@redhat.com \
    --cc=eblake@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=eesposit@redhat.com \
    --cc=fam@euphon.net \
    --cc=farosas@suse.de \
    --cc=hreitz@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=leobras@redhat.com \
    --cc=lizhijian@fujitsu.com \
    --cc=mst@redhat.com \
    --cc=paul@xen.org \
    --cc=pavel.dovgaluk@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=sstabellini@kernel.org \
    --cc=stefanha@gmail.com \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@yandex-team.ru \
    --cc=wencongyang2@huawei.com \
    --cc=xen-devel@lists.xenproject.org \
    --cc=xiechanglong.d@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.