浏览代码

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>
Fam Zheng 8 年之前
父节点
当前提交
aef4278c5a
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      blockjob.c

+ 2 - 2
blockjob.c

@@ -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);
     }
     }
 }
 }