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,
Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Subject: Re: [PATCH v10 06/21] job: move and update comments from blockjob.c
Date: Wed, 3 Aug 2022 17:47:25 +0200 [thread overview]
Message-ID: <YuqYjXI51BbuadSj@redhat.com> (raw)
In-Reply-To: <20220725073855.76049-7-eesposit@redhat.com>
Am 25.07.2022 um 09:38 hat Emanuele Giuseppe Esposito geschrieben:
> This comment applies more on job, it was left in blockjob as in the past
> the whole job logic was implemented there.
>
> Note: at this stage, job_{lock/unlock} and job lock guard macros
> are *nop*.
>
> No functional change intended.
>
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
> ---
> blockjob.c | 20 --------------------
> job.c | 14 ++++++++++++++
> 2 files changed, 14 insertions(+), 20 deletions(-)
>
> diff --git a/blockjob.c b/blockjob.c
> index 4868453d74..7da59a1f1c 100644
> --- a/blockjob.c
> +++ b/blockjob.c
> @@ -36,21 +36,6 @@
> #include "qemu/main-loop.h"
> #include "qemu/timer.h"
>
> -/*
> - * The block job API is composed of two categories of functions.
> - *
> - * The first includes functions used by the monitor. The monitor is
> - * peculiar in that it accesses the block job list with block_job_get, and
> - * therefore needs consistency across block_job_get and the actual operation
> - * (e.g. block_job_set_speed). The consistency is achieved with
> - * aio_context_acquire/release. These functions are declared in blockjob.h.
> - *
> - * The second includes functions used by the block job drivers and sometimes
> - * by the core block layer. These do not care about locking, because the
> - * whole coroutine runs under the AioContext lock, and are declared in
> - * blockjob_int.h.
> - */
> -
> static bool is_block_job(Job *job)
> {
> return job_type(job) == JOB_TYPE_BACKUP ||
> @@ -433,11 +418,6 @@ static void block_job_event_ready(Notifier *n, void *opaque)
> }
>
>
> -/*
> - * API for block job drivers and the block layer. These functions are
> - * declared in blockjob_int.h.
> - */
> -
> void *block_job_create(const char *job_id, const BlockJobDriver *driver,
> JobTxn *txn, BlockDriverState *bs, uint64_t perm,
> uint64_t shared_perm, int64_t speed, int flags,
> diff --git a/job.c b/job.c
> index ae25db97ac..ebaa4e585b 100644
> --- a/job.c
> +++ b/job.c
> @@ -32,6 +32,20 @@
> #include "trace/trace-root.h"
> #include "qapi/qapi-events-job.h"
>
> +/*
> + * The job API is composed of two categories of functions.
> + *
> + * The first includes functions used by the monitor. The monitor is
> + * peculiar in that it accesses the block job list with job_get, and
s/block job/job/
> + * therefore needs consistency across job_get and the actual operation
> + * (e.g. job_user_cancel). To achieve this consistency, the caller
> + * calls job_lock/job_unlock itself around the whole operation.
> + *
> + *
> + * The second includes functions used by the block job drivers and sometimes
Same here.
> + * by the core block layer. These delegate the locking to the callee instead.
> + */
Unless I'm missing something, this comment (specifically the part with
calling job_lock/job_unlock outside of job.c) is actually not true at
this point in the series. I would suggest adding a comment to this
effect, like:
* TODO Actually make this true
Then we know that when you remove the comment, we need to review that
it's actually true at that point in the series.
For now, I'll just try to remember checking this later.
Kevin
next prev parent reply other threads:[~2022-08-03 15:50 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-25 7:38 [PATCH v10 00/21] job: replace AioContext lock with job_mutex Emanuele Giuseppe Esposito
2022-07-25 7:38 ` [PATCH v10 01/21] job.c: make job_mutex and job_lock/unlock() public Emanuele Giuseppe Esposito
2022-07-25 7:38 ` [PATCH v10 02/21] job.h: categorize fields in struct Job Emanuele Giuseppe Esposito
2022-07-29 12:30 ` Kevin Wolf
2022-08-16 18:28 ` Stefan Hajnoczi
2022-07-25 7:38 ` [PATCH v10 03/21] job.c: API functions not used outside should be static Emanuele Giuseppe Esposito
2022-07-29 12:30 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED Emanuele Giuseppe Esposito
2022-07-29 12:33 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 05/21] job.c: add job_lock/unlock while keeping job.h intact Emanuele Giuseppe Esposito
2022-07-27 10:45 ` Vladimir Sementsov-Ogievskiy
2022-07-29 13:33 ` Kevin Wolf
2022-08-16 18:31 ` Stefan Hajnoczi
2022-07-25 7:38 ` [PATCH v10 06/21] job: move and update comments from blockjob.c Emanuele Giuseppe Esposito
2022-08-03 15:47 ` Kevin Wolf [this message]
2022-08-16 18:32 ` Stefan Hajnoczi
2022-07-25 7:38 ` [PATCH v10 07/21] blockjob: introduce block_job _locked() APIs Emanuele Giuseppe Esposito
2022-08-03 15:52 ` Kevin Wolf
2022-08-16 18:33 ` Stefan Hajnoczi
2022-07-25 7:38 ` [PATCH v10 08/21] jobs: add job lock in find_* functions Emanuele Giuseppe Esposito
2022-08-04 11:47 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 09/21] jobs: use job locks also in the unit tests Emanuele Giuseppe Esposito
2022-07-27 14:29 ` Vladimir Sementsov-Ogievskiy
2022-08-04 11:56 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 10/21] block/mirror.c: use of job helpers in drivers to avoid TOC/TOU Emanuele Giuseppe Esposito
2022-08-04 16:35 ` Kevin Wolf
2022-08-16 14:23 ` Emanuele Giuseppe Esposito
2022-07-25 7:38 ` [PATCH v10 11/21] jobs: group together API calls under the same job lock Emanuele Giuseppe Esposito
2022-07-27 14:50 ` Vladimir Sementsov-Ogievskiy
2022-08-04 17:10 ` Kevin Wolf
2022-08-16 14:54 ` Emanuele Giuseppe Esposito
2022-08-17 8:46 ` Kevin Wolf
2022-08-17 9:35 ` Emanuele Giuseppe Esposito
2022-08-17 9:59 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 12/21] commit and mirror: create new nodes using bdrv_get_aio_context, and not the job aiocontext Emanuele Giuseppe Esposito
2022-08-05 8:14 ` Kevin Wolf
2022-08-16 14:57 ` Emanuele Giuseppe Esposito
2022-07-25 7:38 ` [PATCH v10 13/21] job: detect change of aiocontext within job coroutine Emanuele Giuseppe Esposito
2022-08-05 8:37 ` Kevin Wolf
2022-08-16 15:09 ` Emanuele Giuseppe Esposito
2022-08-17 8:34 ` Kevin Wolf
2022-08-17 11:16 ` Emanuele Giuseppe Esposito
2022-07-25 7:38 ` [PATCH v10 14/21] jobs: protect job.aio_context with BQL and job_mutex Emanuele Giuseppe Esposito
2022-07-27 15:22 ` Vladimir Sementsov-Ogievskiy
2022-08-05 9:12 ` Kevin Wolf
2022-08-17 8:04 ` Emanuele Giuseppe Esposito
2022-08-17 13:10 ` Emanuele Giuseppe Esposito
2022-08-18 8:48 ` Emanuele Giuseppe Esposito
2022-07-25 7:38 ` [PATCH v10 15/21] blockjob.h: categorize fields in struct BlockJob Emanuele Giuseppe Esposito
2022-08-05 9:21 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 16/21] blockjob: rename notifier callbacks as _locked Emanuele Giuseppe Esposito
2022-08-05 9:25 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 17/21] blockjob: protect iostatus field in BlockJob struct Emanuele Giuseppe Esposito
2022-07-27 15:29 ` Vladimir Sementsov-Ogievskiy
2022-08-16 12:39 ` Emanuele Giuseppe Esposito
2022-08-05 10:55 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 18/21] job.c: enable job lock/unlock and remove Aiocontext locks Emanuele Giuseppe Esposito
2022-07-27 15:53 ` Vladimir Sementsov-Ogievskiy
2022-08-16 12:52 ` Emanuele Giuseppe Esposito
2022-08-17 18:54 ` Vladimir Sementsov-Ogievskiy
2022-08-18 7:46 ` Emanuele Giuseppe Esposito
2022-08-19 15:49 ` Vladimir Sementsov-Ogievskiy
2022-08-16 12:53 ` Emanuele Giuseppe Esposito
2022-08-05 13:01 ` Kevin Wolf
2022-08-17 12:45 ` Emanuele Giuseppe Esposito
2022-07-25 7:38 ` [PATCH v10 19/21] block_job_query: remove atomic read Emanuele Giuseppe Esposito
2022-08-05 13:01 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 20/21] blockjob: remove unused functions Emanuele Giuseppe Esposito
2022-08-05 13:05 ` Kevin Wolf
2022-07-25 7:38 ` [PATCH v10 21/21] job: " Emanuele Giuseppe Esposito
2022-08-05 13:09 ` 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=YuqYjXI51BbuadSj@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=vsementsov@yandex-team.ru \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).