From: Stefan Hajnoczi <stefanha@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, "Hanna Reitz" <hreitz@redhat.com>,
"Paul Durrant" <paul@xen.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alberto Garcia" <berto@igalia.com>,
"Emanuele Giuseppe Esposito" <eesposit@redhat.com>,
"John Snow" <jsnow@redhat.com>, "Kevin Wolf" <kwolf@redhat.com>,
"Wen Congyang" <wencongyang2@huawei.com>,
qemu-block@nongnu.org, xen-devel@lists.xenproject.org,
"Coiby Xu" <Coiby.Xu@gmail.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Xie Changlong" <xiechanglong.d@gmail.com>,
"Ari Sundholm" <ari@tuxera.com>,
"Li Zhijian" <lizhijian@fujitsu.com>,
"Cleber Rosa" <crosa@redhat.com>,
"Juan Quintela" <quintela@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Vladimir Sementsov-Ogievskiy" <vsementsov@yandex-team.ru>,
"Zhang Chen" <chen.zhang@intel.com>,
"Peter Xu" <peterx@redhat.com>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Leonardo Bras" <leobras@redhat.com>,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
"Fam Zheng" <fam@euphon.net>, "Fabiano Rosas" <farosas@suse.de>
Subject: Re: [PATCH 05/12] block: remove AioContext locking
Date: Mon, 4 Dec 2023 10:28:17 -0500 [thread overview]
Message-ID: <20231204152817.GD1492005@fedora> (raw)
In-Reply-To: <haqk3uaxn25it4myxsockwyqxarroyqpzpticpxfdzld4qwewh@edcz4bipmqlw>
[-- Attachment #1: Type: text/plain, Size: 3743 bytes --]
On Thu, Nov 30, 2023 at 03:31:37PM -0600, Eric Blake wrote:
> On Wed, Nov 29, 2023 at 02:55:46PM -0500, Stefan Hajnoczi wrote:
> > This is the big patch that removes
> > aio_context_acquire()/aio_context_release() from the block layer and
> > affected block layer users.
> >
> > There isn't a clean way to split this patch and the reviewers are likely
> > the same group of people, so I decided to do it in one patch.
> >
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
>
> > +++ b/block.c
> > @@ -7585,29 +7433,12 @@ void coroutine_fn bdrv_co_leave(BlockDriverState *bs, AioContext *old_ctx)
> >
> > void coroutine_fn bdrv_co_lock(BlockDriverState *bs)
> > {
> > - AioContext *ctx = bdrv_get_aio_context(bs);
> > -
> > - /* In the main thread, bs->aio_context won't change concurrently */
> > - assert(qemu_get_current_aio_context() == qemu_get_aio_context());
> > -
> > - /*
> > - * We're in coroutine context, so we already hold the lock of the main
> > - * loop AioContext. Don't lock it twice to avoid deadlocks.
> > - */
> > - assert(qemu_in_coroutine());
>
> Is this assertion worth keeping in the short term?...
Probably not because coroutine vs non-coroutine functions don't change
in this patch series, so it's unlikely that this will break.
>
> > - if (ctx != qemu_get_aio_context()) {
> > - aio_context_acquire(ctx);
> > - }
> > + /* TODO removed in next patch */
> > }
>
> ...I guess I'll see in the next patch.
>
> >
> > void coroutine_fn bdrv_co_unlock(BlockDriverState *bs)
> > {
> > - AioContext *ctx = bdrv_get_aio_context(bs);
> > -
> > - assert(qemu_in_coroutine());
> > - if (ctx != qemu_get_aio_context()) {
> > - aio_context_release(ctx);
> > - }
> > + /* TODO removed in next patch */
> > }
>
> Same comment.
>
> > +++ b/blockdev.c
> > @@ -1395,7 +1352,6 @@ static void external_snapshot_action(TransactionAction *action,
> > /* File name of the new image (for 'blockdev-snapshot-sync') */
> > const char *new_image_file;
> > ExternalSnapshotState *state = g_new0(ExternalSnapshotState, 1);
> > - AioContext *aio_context;
> > uint64_t perm, shared;
> >
> > /* TODO We'll eventually have to take a writer lock in this function */
>
> I'm guessing removal of the locking gets us one step closer to
> implementing this TODO at a later time? Or is it now a stale comment?
> Either way, it doesn't affect this patch.
I'm not sure. Kevin can answer questions about the graph lock.
> > +++ b/tests/unit/test-blockjob.c
>
> > -static void test_complete_in_standby(void)
> > -{
>
> > @@ -531,13 +402,5 @@ int main(int argc, char **argv)
> > g_test_add_func("/blockjob/cancel/standby", test_cancel_standby);
> > g_test_add_func("/blockjob/cancel/pending", test_cancel_pending);
> > g_test_add_func("/blockjob/cancel/concluded", test_cancel_concluded);
> > -
> > - /*
> > - * This test is flaky and sometimes fails in CI and otherwise:
> > - * don't run unless user opts in via environment variable.
> > - */
> > - if (getenv("QEMU_TEST_FLAKY_TESTS")) {
> > - g_test_add_func("/blockjob/complete_in_standby", test_complete_in_standby);
> > - }
>
> Looks like you ripped out this entire test, because it is no longer
> viable. I might have mentioned it in the commit message, or squashed
> the removal of this test into the earlier 02/12 patch.
I have sent a separate patch to remove this test and once it's merged
this hunk will disappear this patch series:
https://lore.kernel.org/qemu-devel/20231127170210.422728-1-stefanha@redhat.com/
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2023-12-04 15:29 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-29 19:55 [PATCH 00/12] aio: remove AioContext lock Stefan Hajnoczi
2023-11-29 19:55 ` [PATCH 01/12] virtio-scsi: replace AioContext lock with tmf_bh_lock Stefan Hajnoczi
2023-11-30 15:25 ` Eric Blake
2023-12-04 14:49 ` Stefan Hajnoczi
2023-12-04 12:35 ` Kevin Wolf
2023-12-04 12:46 ` Kevin Wolf
2023-12-04 14:51 ` Stefan Hajnoczi
2023-11-29 19:55 ` [PATCH 02/12] tests: remove aio_context_acquire() tests Stefan Hajnoczi
2023-11-30 15:29 ` Eric Blake
2023-12-04 12:54 ` Kevin Wolf
2023-11-29 19:55 ` [PATCH 03/12] aio: make aio_context_acquire()/aio_context_release() a no-op Stefan Hajnoczi
2023-11-30 18:10 ` Eric Blake
2023-12-04 13:18 ` Kevin Wolf
2023-11-29 19:55 ` [PATCH 04/12] graph-lock: remove AioContext locking Stefan Hajnoczi
2023-11-30 19:33 ` Eric Blake
2023-12-04 13:21 ` Kevin Wolf
2023-11-29 19:55 ` [PATCH 05/12] block: " Stefan Hajnoczi
2023-11-30 9:12 ` Paul Durrant
2023-11-30 21:31 ` Eric Blake
2023-12-04 15:28 ` Stefan Hajnoczi [this message]
2023-12-04 14:33 ` Kevin Wolf
2023-12-04 15:17 ` Stefan Hajnoczi
2023-11-29 19:55 ` [PATCH 06/12] scsi: " Stefan Hajnoczi
2023-11-30 21:36 ` Eric Blake
2023-12-04 12:23 ` Kevin Wolf
2023-12-04 15:28 ` Stefan Hajnoczi
2023-11-29 19:55 ` [PATCH 07/12] aio-wait: draw equivalence between AIO_WAIT_WHILE() and AIO_WAIT_WHILE_UNLOCKED() Stefan Hajnoczi
2023-11-30 21:39 ` Eric Blake
2023-11-29 19:55 ` [PATCH 08/12] aio: remove aio_context_acquire()/aio_context_release() API Stefan Hajnoczi
2023-11-30 21:42 ` Eric Blake
2023-11-29 19:55 ` [PATCH 09/12] docs: remove AioContext lock from IOThread docs Stefan Hajnoczi
2023-11-30 22:38 ` Eric Blake
2023-11-29 19:55 ` [PATCH 10/12] scsi: remove outdated AioContext lock comment Stefan Hajnoczi
2023-11-30 22:39 ` Eric Blake
2023-11-29 19:55 ` [PATCH 11/12] job: remove outdated AioContext locking comments Stefan Hajnoczi
2023-12-01 17:50 ` Eric Blake
2023-11-29 19:55 ` [PATCH 12/12] block: " Stefan Hajnoczi
2023-12-01 18:41 ` Eric Blake
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=20231204152817.GD1492005@fedora \
--to=stefanha@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=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=kwolf@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=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=sstabellini@kernel.org \
--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.