From: Kevin Wolf <kwolf@redhat.com>
To: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Cc: qemu-block@nongnu.org, Hanna Reitz <hreitz@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>, John Snow <jsnow@redhat.com>,
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
Wen Congyang <wencongyang2@huawei.com>,
Xie Changlong <xiechanglong.d@gmail.com>,
Markus Armbruster <armbru@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>, Fam Zheng <fam@euphon.net>,
qemu-devel@nongnu.org
Subject: Re: [PATCH v12 00/21] job: replace AioContext lock with job_mutex
Date: Thu, 6 Oct 2022 19:42:13 +0200 [thread overview]
Message-ID: <Yz8TdZAzmrit+u3k@redhat.com> (raw)
In-Reply-To: <20220926093214.506243-1-eesposit@redhat.com>
Am 26.09.2022 um 11:31 hat Emanuele Giuseppe Esposito geschrieben:
> In this series, we want to remove the AioContext lock and instead
> use the already existent job_mutex to protect the job structures
> and list. This is part of the work to get rid of AioContext lock
> usage in favour of smaller granularity locks.
>
> In order to simplify reviewer's job, job lock/unlock functions and
> macros are added as empty prototypes (nop) in patch 1.
> They are converted to use the actual job mutex only in the last
> patch. In this way we can freely create locking sections
> without worrying about deadlocks with the aiocontext lock.
>
> Patch 2 defines what fields in the job structure need protection.
> Patches 3-6 are in preparation to the job locks, moving functions
> from global to static and introducing helpers.
>
> Patch 7-9 introduce the (nop) job lock into the job API and
> its users, and patches 10-13 categorize respectively locked and
> unlocked functions in the job API.
>
> Patches 14-17 take care of protecting job->aio_context, and
> finally patch 18 makes the prototypes in patch 1 use the
> job_mutex and removes all aiocontext lock at the same time.
>
> Tested this series by running unit tests, qemu-iotests and qtests
> (x86_64).
Since there only seems to be the one problem in patch 16, I'm taking the
liberty to fix up the type of iostatus (bool -> BlockDeviceIoStatus)
myself.
Thanks, applied to the block branch.
Kevin
prev parent reply other threads:[~2022-10-06 18:15 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-26 9:31 [PATCH v12 00/21] job: replace AioContext lock with job_mutex Emanuele Giuseppe Esposito
2022-09-26 9:31 ` [PATCH v12 01/21] job.c: make job_mutex and job_lock/unlock() public Emanuele Giuseppe Esposito
2022-09-26 9:31 ` [PATCH v12 02/21] job.h: categorize fields in struct Job Emanuele Giuseppe Esposito
2022-09-26 9:31 ` [PATCH v12 03/21] job.c: API functions not used outside should be static Emanuele Giuseppe Esposito
2022-09-26 9:31 ` [PATCH v12 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED Emanuele Giuseppe Esposito
2022-09-26 9:31 ` [PATCH v12 05/21] job.c: add job_lock/unlock while keeping job.h intact Emanuele Giuseppe Esposito
2022-09-26 9:31 ` [PATCH v12 06/21] job: move and update comments from blockjob.c Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 07/21] blockjob: introduce block_job _locked() APIs Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 08/21] jobs: add job lock in find_* functions Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 09/21] jobs: use job locks also in the unit tests Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 10/21] block/mirror.c: use of job helpers in drivers Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 11/21] jobs: group together API calls under the same job lock Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 12/21] job: detect change of aiocontext within job coroutine Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 13/21] jobs: protect job.aio_context with BQL and job_mutex Emanuele Giuseppe Esposito
2022-09-26 11:53 ` Vladimir Sementsov-Ogievskiy
2022-09-26 9:32 ` [PATCH v12 14/21] blockjob.h: categorize fields in struct BlockJob Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 15/21] blockjob: rename notifier callbacks as _locked Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 16/21] blockjob: protect iostatus field in BlockJob struct Emanuele Giuseppe Esposito
2022-10-06 16:48 ` Kevin Wolf
2022-09-26 9:32 ` [PATCH v12 17/21] job.h: categorize JobDriver callbacks that need the AioContext lock Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 18/21] job.c: enable job lock/unlock and remove Aiocontext locks Emanuele Giuseppe Esposito
2022-09-26 12:24 ` Vladimir Sementsov-Ogievskiy
2022-09-26 9:32 ` [PATCH v12 19/21] block_job_query: remove atomic read Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 20/21] blockjob: remove unused functions Emanuele Giuseppe Esposito
2022-09-26 9:32 ` [PATCH v12 21/21] job: " Emanuele Giuseppe Esposito
2022-09-26 12:34 ` Vladimir Sementsov-Ogievskiy
2022-10-06 17:42 ` Kevin Wolf [this message]
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=Yz8TdZAzmrit+u3k@redhat.com \
--to=kwolf@redhat.com \
--cc=armbru@redhat.com \
--cc=eesposit@redhat.com \
--cc=fam@euphon.net \
--cc=hreitz@redhat.com \
--cc=jsnow@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vsementsov@virtuozzo.com \
--cc=wencongyang2@huawei.com \
--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.