blockjob: Use bdrv_coroutine_enter to start coroutine

Resuming and especially starting of the block job coroutine, could be issued in
the main thread.  However the coroutine's "home" ctx should be set to the same
context as job->blk. Use bdrv_coroutine_enter to ensure that.

Signed-off-by: Fam Zheng <famz@redhat.com>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Fam Zheng 2017-04-10 20:12:05 +08:00
parent 052a75721f
commit aef4278c5a

View File

@ -290,7 +290,7 @@ void block_job_start(BlockJob *job)
job->pause_count--; job->pause_count--;
job->busy = true; job->busy = true;
job->paused = false; job->paused = false;
qemu_coroutine_enter(job->co); bdrv_coroutine_enter(blk_bs(job->blk), job->co);
} }
void block_job_ref(BlockJob *job) void block_job_ref(BlockJob *job)
@ -532,7 +532,7 @@ void block_job_user_resume(BlockJob *job)
void block_job_enter(BlockJob *job) void block_job_enter(BlockJob *job)
{ {
if (job->co && !job->busy) { if (job->co && !job->busy) {
qemu_coroutine_enter(job->co); bdrv_coroutine_enter(blk_bs(job->blk), job->co);
} }
} }