There are a few places where we're fishing it out for ourselves. Let's not do that and instead use the helper.
Signed-off-by: John Snow <js...@redhat.com> --- block/io.c | 4 ++-- blockdev.c | 4 ++-- blockjob.c | 2 +- include/block/blockjob.h | 9 +++++++++ qemu-img.c | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/block/io.c b/block/io.c index 868b065..f26a503 100644 --- a/block/io.c +++ b/block/io.c @@ -288,7 +288,7 @@ void bdrv_drain_all(void) GSList *aio_ctxs = NULL, *ctx; while ((job = block_job_next(job))) { - AioContext *aio_context = blk_get_aio_context(job->blk); + AioContext *aio_context = block_job_get_aio_context(job); aio_context_acquire(aio_context); block_job_pause(job, false); @@ -347,7 +347,7 @@ void bdrv_drain_all(void) job = NULL; while ((job = block_job_next(job))) { - AioContext *aio_context = blk_get_aio_context(job->blk); + AioContext *aio_context = block_job_get_aio_context(job); aio_context_acquire(aio_context); block_job_resume(job); diff --git a/blockdev.c b/blockdev.c index 268452f..0ac507f 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3596,7 +3596,7 @@ static BlockJob *find_block_job(const char *id, AioContext **aio_context, return NULL; } - *aio_context = blk_get_aio_context(job->blk); + *aio_context = block_job_get_aio_context(job); aio_context_acquire(*aio_context); return job; @@ -3956,7 +3956,7 @@ BlockJobInfoList *qmp_query_block_jobs(Error **errp) for (job = block_job_next(NULL); job; job = block_job_next(job)) { BlockJobInfoList *elem = g_new0(BlockJobInfoList, 1); - AioContext *aio_context = blk_get_aio_context(job->blk); + AioContext *aio_context = block_job_get_aio_context(job); aio_context_acquire(aio_context); elem->value = block_job_query(job); diff --git a/blockjob.c b/blockjob.c index 2a35f50..073d9ce 100644 --- a/blockjob.c +++ b/blockjob.c @@ -78,7 +78,7 @@ BlockJob *block_job_get(const char *id) * block_job_defer_to_main_loop() where it runs in the QEMU main loop. Code * that supports both cases uses this helper function. */ -static AioContext *block_job_get_aio_context(BlockJob *job) +AioContext *block_job_get_aio_context(BlockJob *job) { return job->deferred_to_main_loop ? qemu_get_aio_context() : diff --git a/include/block/blockjob.h b/include/block/blockjob.h index 081f6c2..6f28c73 100644 --- a/include/block/blockjob.h +++ b/include/block/blockjob.h @@ -513,4 +513,13 @@ void block_job_txn_unref(BlockJobTxn *txn); */ void block_job_txn_add_job(BlockJobTxn *txn, BlockJob *job); +/** + * block_job_get_aio_context: + * @job: Job to get the aio_context for + * + * Fetch the current context for the given BlockJob. May be the main loop if + * the job has already deferred to main for final cleanup. + */ +AioContext *block_job_get_aio_context(BlockJob *job); + #endif diff --git a/qemu-img.c b/qemu-img.c index ceffefe..204fa9c 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -793,7 +793,7 @@ static void common_block_job_cb(void *opaque, int ret) static void run_block_job(BlockJob *job, Error **errp) { - AioContext *aio_context = blk_get_aio_context(job->blk); + AioContext *aio_context = block_job_get_aio_context(job); do { aio_poll(aio_context, true); -- 2.7.4