mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-30 05:21:55 -06:00
job: call job_enter from job_pause
If main job coroutine called job_yield (while some background process is in progress), we should give it a chance to call job_pause_point(). It will be used in backup, when moved on async block-copy. Note, that job_user_pause is not enough: we want to handle child_job_drained_begin() as well, which call job_pause(). Still, if job is already in job_do_yield() in job_pause_point() we should not enter it. iotest 109 output is modified: on stop we do bdrv_drain_all() which now triggers job pause immediately (and pause after ready is standby). Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20210116214705.822267-10-vsementsov@virtuozzo.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
e0323a045f
commit
3ee1483b95
2 changed files with 27 additions and 0 deletions
3
job.c
3
job.c
|
@ -553,6 +553,9 @@ static bool job_timer_not_pending(Job *job)
|
|||
void job_pause(Job *job)
|
||||
{
|
||||
job->pause_count++;
|
||||
if (!job->paused) {
|
||||
job_enter(job);
|
||||
}
|
||||
}
|
||||
|
||||
void job_resume(Job *job)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue