block/mirror.c: use of job helpers in drivers

Once job lock is used and aiocontext is removed, mirror has
to perform job operations under the same critical section,
Note: at this stage, job_{lock/unlock} and job lock guard macros
are *nop*.

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Message-Id: <20220926093214.506243-11-eesposit@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Emanuele Giuseppe Esposito 2022-09-26 05:32:03 -04:00 committed by Kevin Wolf
parent 191e7af394
commit 279ac06e55
1 changed files with 9 additions and 4 deletions

View File

@ -1152,8 +1152,10 @@ static void mirror_complete(Job *job, Error **errp)
s->should_complete = true;
/* If the job is paused, it will be re-entered when it is resumed */
if (!job->paused) {
job_enter(job);
WITH_JOB_LOCK_GUARD() {
if (!job->paused) {
job_enter_cond_locked(job, NULL);
}
}
}
@ -1173,8 +1175,11 @@ static bool mirror_drained_poll(BlockJob *job)
* from one of our own drain sections, to avoid a deadlock waiting for
* ourselves.
*/
if (!s->common.job.paused && !job_is_cancelled(&job->job) && !s->in_drain) {
return true;
WITH_JOB_LOCK_GUARD() {
if (!s->common.job.paused && !job_is_cancelled_locked(&job->job)
&& !s->in_drain) {
return true;
}
}
return !!s->in_flight;