From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45670) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bw8O6-0003UO-Vs for qemu-devel@nongnu.org; Mon, 17 Oct 2016 09:55:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bw8O4-0005Pu-Ci for qemu-devel@nongnu.org; Mon, 17 Oct 2016 09:55:35 -0400 Sender: Paolo Bonzini From: Paolo Bonzini Date: Mon, 17 Oct 2016 15:54:26 +0200 Message-Id: <1476712470-11660-17-git-send-email-pbonzini@redhat.com> In-Reply-To: <1476712470-11660-1-git-send-email-pbonzini@redhat.com> References: <1476712470-11660-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 16/20] qemu-img: call aio_context_acquire/release around block job List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, famz@redhat.com, kwolf@redhat.com, stefanha@redhat.com This will be needed by bdrv_reopen_multiple, which calls bdrv_drain_all and thus will *release* the AioContext. Signed-off-by: Paolo Bonzini --- v1->v2: new [qemu-iotests] qemu-img.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qemu-img.c b/qemu-img.c index 02c07b9..ad7c964 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; } -- 2.7.4