From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53251) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bwf9Q-0007IU-Uz for qemu-devel@nongnu.org; Tue, 18 Oct 2016 20:54:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bwf9Q-00025z-8Z for qemu-devel@nongnu.org; Tue, 18 Oct 2016 20:54:37 -0400 Date: Wed, 19 Oct 2016 08:54:27 +0800 From: Fam Zheng Message-ID: <20161019005427.GA9394@lemon> References: <1476712470-11660-1-git-send-email-pbonzini@redhat.com> <1476712470-11660-17-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1476712470-11660-17-git-send-email-pbonzini@redhat.com> Subject: Re: [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: Paolo Bonzini Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org, kwolf@redhat.com, stefanha@redhat.com On Mon, 10/17 15:54, Paolo Bonzini wrote: > This will be needed by bdrv_reopen_multiple, which calls > bdrv_drain_all and thus will *release* the AioContext. Looks okay, but I wonder how bdrv_drain_all releasing AioContext break anything? Fam > > 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 > >