[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v9 07/21] blockjob: introduce block_job _locked() APIs
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
Re: [PATCH v9 07/21] blockjob: introduce block_job _locked() APIs |
Date: |
Mon, 11 Jul 2022 15:04:36 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 |
On 7/6/22 23:15, Emanuele Giuseppe Esposito wrote:
Just as done with job.h, create _locked() functions in blockjob.h
These functions will be later useful when caller has already taken
the lock. All blockjob _locked functions call job _locked functions.
Note: at this stage, job_{lock/unlock} and job lock guard macros
are *nop*.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
We not only create _locked() interfaces, but also make some functions correct
relatively to job_mutex that was not correct pre-patch, for example:
block_job_iostatus_reset(): the function doesn't call any job_* APIs, but it
access Job fields. After patch fields are accessed under mutex which is
correct, and that's the significant change worth mentioning in commit message.
So, more correct is to say, that we make some functions of blockjob API correct
relatively to job_mutex and Job fields.
With at least this clarified, I'm OK with the patch as is:
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
What kept in mind after the patch:
1. Some functions still need an update, for example block_job_error_action,
that access Job.user_pause without locking the job_mutex. Or,
block_job_event_completed that accesses Job.ret..
2. What about BlockJob.nodes field? Shouldn't we protect it by the mutex?
--
Best regards,
Vladimir
- Re: [PATCH v9 12/21] commit and mirror: create new nodes using bdrv_get_aio_context, and not the job aiocontext, (continued)
[PATCH v9 07/21] blockjob: introduce block_job _locked() APIs, Emanuele Giuseppe Esposito, 2022/07/06
- Re: [PATCH v9 07/21] blockjob: introduce block_job _locked() APIs,
Vladimir Sementsov-Ogievskiy <=
[PATCH v9 01/21] job.c: make job_mutex and job_lock/unlock() public, Emanuele Giuseppe Esposito, 2022/07/06
[PATCH v9 20/21] blockjob: remove unused functions, Emanuele Giuseppe Esposito, 2022/07/06
[PATCH v9 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED, Emanuele Giuseppe Esposito, 2022/07/06
[PATCH v9 08/21] jobs: add job lock in find_* functions, Emanuele Giuseppe Esposito, 2022/07/06
[PATCH v9 11/21] jobs: group together API calls under the same job lock, Emanuele Giuseppe Esposito, 2022/07/06