[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v9 11/21] jobs: group together API calls under the same job l
From: |
Emanuele Giuseppe Esposito |
Subject: |
Re: [PATCH v9 11/21] jobs: group together API calls under the same job lock |
Date: |
Tue, 19 Jul 2022 14:40:13 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 |
Am 11/07/2022 um 15:26 schrieb Vladimir Sementsov-Ogievskiy:
>> }
>> static bool child_job_drained_poll(BdrvChild *c)
>> @@ -111,8 +113,10 @@ static bool child_job_drained_poll(BdrvChild *c)
>> /* An inactive or completed job doesn't have any pending
>> requests. Jobs
>> * with !job->busy are either already paused or have a pause
>> point after
>> * being reentered, so no job driver code will run before they
>> pause. */
>> - if (!job->busy || job_is_completed(job)) {
>> - return false;
>> + WITH_JOB_LOCK_GUARD() {
>> + if (!job->busy || job_is_completed_locked(job)) {
>> + return false;
>> + }
>> }
>
> This doesn't correspond to commit subject. I'd put such things to
> separate commit "correct use of job_mutex in blockjob.c".
>
>> /* Otherwise, assume that it isn't fully stopped yet, but
>> allow the job to
>> @@ -127,7 +131,9 @@ static bool child_job_drained_poll(BdrvChild *c)
>> static void child_job_drained_end(BdrvChild *c, int
>> *drained_end_counter)
>> {
>> BlockJob *job = c->opaque;
>> - job_resume(&job->job);
>> + WITH_JOB_LOCK_GUARD() {
>> + job_resume_locked(&job->job);
>> + }
>> }
>
> Again, don't see a reason for such change.
>
>
> [my comments relate to more similar cases in the patch]
I think you misunderstood: I aim to group API calls under the same lock.
One application of such grouping involves loops, but not only them.
Regarding the single-line WITH_JOB_LOCK_GUARD (job_next, job_pause,
job_resume and similar), I guess I will keep the not-locked function.
Emanuele
- [PATCH v9 07/21] blockjob: introduce block_job _locked() APIs, (continued)
- [PATCH v9 07/21] blockjob: introduce block_job _locked() APIs, Emanuele Giuseppe Esposito, 2022/07/06
- [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
- [PATCH v9 02/21] job.h: categorize fields in struct Job, Emanuele Giuseppe Esposito, 2022/07/06
- [PATCH v9 16/21] block_job_query: remove atomic read, Emanuele Giuseppe Esposito, 2022/07/06
- [PATCH v9 17/21] blockjob.h: categorize fields in struct BlockJob, Emanuele Giuseppe Esposito, 2022/07/06
- [PATCH v9 18/21] blockjob: rename notifier callbacks as _locked, Emanuele Giuseppe Esposito, 2022/07/06
- [PATCH v9 21/21] job: remove unused functions, Emanuele Giuseppe Esposito, 2022/07/06