diff options
| author | Jeff Cody <jcody@redhat.com> | 2018-08-21 12:26:19 -0400 |
|---|---|---|
| committer | Jeff Cody <jcody@redhat.com> | 2018-08-21 14:59:30 -0400 |
| commit | e321c0597c7590499bacab239d7f86e257f96bcd (patch) | |
| tree | 887df1322c2db6108238ebc246c1e6824f79edfa /job.c | |
| parent | ee135aa0428fe5af2af7be04ff16d2b596a9330a (diff) | |
| download | focaccia-qemu-e321c0597c7590499bacab239d7f86e257f96bcd.tar.gz focaccia-qemu-e321c0597c7590499bacab239d7f86e257f96bcd.zip | |
block: for jobs, do not clear user_paused until after the resume
The function job_cancel_async() will always cause an assert for blockjob user resume. We set job->user_paused to false, and then call job->driver->user_resume(). In the case of blockjobs, this is the block_job_user_resume() function. In that function, we assert that job.user_paused is set to true. Unfortunately, right before calling this function, it has explicitly been set to false. The fix is pretty simple: set job->user_paused to false only after the job user_resume() function has been called. Reviewed-by: John Snow <jsnow@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Jeff Cody <jcody@redhat.com> Message-id: bb183b77d8f2dd6bd67b8da559a90ac1e74b2052.1534868459.git.jcody@redhat.com Signed-off-by: Jeff Cody <jcody@redhat.com>
Diffstat (limited to 'job.c')
| -rw-r--r-- | job.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/job.c b/job.c index fa671b431a..e36ebaafd8 100644 --- a/job.c +++ b/job.c @@ -732,10 +732,10 @@ static void job_cancel_async(Job *job, bool force) { if (job->user_paused) { /* Do not call job_enter here, the caller will handle it. */ - job->user_paused = false; if (job->driver->user_resume) { job->driver->user_resume(job); } + job->user_paused = false; assert(job->pause_count > 0); job->pause_count--; } |