[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 11/13] block/fuse: take AioContext lock around blk_exp_ref/un
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH 11/13] block/fuse: take AioContext lock around blk_exp_ref/unref() |
Date: |
Tue, 4 Apr 2023 17:01:36 -0400 |
On Tue, Apr 04, 2023 at 03:46:34PM +0200, Paolo Bonzini wrote:
> On 4/3/23 20:30, Stefan Hajnoczi wrote:
> > These functions must be called with the AioContext acquired:
> >
> > /* Callers must hold exp->ctx lock */
> > void blk_exp_ref(BlockExport *exp)
> > ...
> > /* Callers must hold exp->ctx lock */
> > void blk_exp_unref(BlockExport *exp)
> >
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> > block/export/fuse.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/block/export/fuse.c b/block/export/fuse.c
> > index 06fa41079e..18394f9e07 100644
> > --- a/block/export/fuse.c
> > +++ b/block/export/fuse.c
> > @@ -244,7 +244,9 @@ static void read_from_fuse_export(void *opaque)
> > FuseExport *exp = opaque;
> > int ret;
> > + aio_context_acquire(exp->common.ctx);
> > blk_exp_ref(&exp->common);
> > + aio_context_release(exp->common.ctx);
> > do {
> > ret = fuse_session_receive_buf(exp->fuse_session, &exp->fuse_buf);
> > @@ -256,7 +258,9 @@ static void read_from_fuse_export(void *opaque)
> > fuse_session_process_buf(exp->fuse_session, &exp->fuse_buf);
> > out:
> > + aio_context_acquire(exp->common.ctx);
> > blk_exp_unref(&exp->common);
> > + aio_context_release(exp->common.ctx);
> > }
>
> Since the actual thread-unsafe work is done in a bottom half, perhaps
> instead you can use qatomic_inc and qatomic_fetch_dec in
> blk_exp_{ref,unref}?
Sure, I'll give that a try in the next revision.
Stefan
signature.asc
Description: PGP signature
- Re: [PATCH 01/13] virtio-scsi: avoid race between unplug and transport event, (continued)
- [PATCH 09/13] hw/xen: do not set is_external=true on evtchn fds, Stefan Hajnoczi, 2023/04/03
- [PATCH 07/13] virtio: do not set is_external=true on host notifiers, Stefan Hajnoczi, 2023/04/03
- [PATCH 12/13] block/fuse: do not set is_external=true on FUSE fd, Stefan Hajnoczi, 2023/04/03
- [PATCH 10/13] block/export: rewrite vduse-blk drain code, Stefan Hajnoczi, 2023/04/03
- [PATCH 13/13] aio: remove aio_disable_external() API, Stefan Hajnoczi, 2023/04/03
- [PATCH 11/13] block/fuse: take AioContext lock around blk_exp_ref/unref(), Stefan Hajnoczi, 2023/04/03
- Re: [PATCH 00/13] block: remove aio_disable_external() API, Paolo Bonzini, 2023/04/04