From 9e944cb4744b527dd93aa989023739375a8880fb Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 27 Oct 2016 12:49:04 +0200 Subject: [PATCH] qemu-img: call aio_context_acquire/release around block job This will be needed by bdrv_reopen_multiple, which calls bdrv_drain_all and thus will *release* the AioContext. Signed-off-by: Paolo Bonzini Reviewed-by: Fam Zheng Message-Id: <1477565348-5458-17-git-send-email-pbonzini@redhat.com> Signed-off-by: Fam Zheng --- qemu-img.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qemu-img.c b/qemu-img.c index afcd51ff18..ac7f40d91a 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -795,6 +795,7 @@ static void run_block_job(BlockJob *job, Error **errp) { AioContext *aio_context = blk_get_aio_context(job->blk); + aio_context_acquire(aio_context); do { aio_poll(aio_context, true); qemu_progress_print(job->len ? @@ -802,6 +803,7 @@ static void run_block_job(BlockJob *job, Error **errp) } while (!job->ready); block_job_complete_sync(job, errp); + aio_context_release(aio_context); /* A block job may finish instantaneously without publishing any progress, * so just signal completion here */ @@ -819,6 +821,7 @@ static int img_commit(int argc, char **argv) Error *local_err = NULL; CommonBlockJobCBInfo cbi; bool image_opts = false; + AioContext *aio_context; fmt = NULL; cache = BDRV_DEFAULT_CACHE; @@ -928,8 +931,11 @@ static int img_commit(int argc, char **argv) .bs = bs, }; + aio_context = bdrv_get_aio_context(bs); + aio_context_acquire(aio_context); commit_active_start("commit", bs, base_bs, 0, BLOCKDEV_ON_ERROR_REPORT, common_block_job_cb, &cbi, &local_err, false); + aio_context_release(aio_context); if (local_err) { goto done; }