From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51203) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bD6e1-0001eE-6f for qemu-devel@nongnu.org; Wed, 15 Jun 2016 04:57:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bD6dw-0007fz-9D for qemu-devel@nongnu.org; Wed, 15 Jun 2016 04:57:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57829) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bD6dw-0007ft-3M for qemu-devel@nongnu.org; Wed, 15 Jun 2016 04:57:48 -0400 Date: Wed, 15 Jun 2016 16:57:41 +0800 From: Fam Zheng Message-ID: <20160615085741.GD14453@ad.usersys.redhat.com> References: <1465928228-1184-1-git-send-email-stefanha@redhat.com> <1465928228-1184-3-git-send-email-stefanha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1465928228-1184-3-git-send-email-stefanha@redhat.com> Subject: Re: [Qemu-devel] [PATCH v4 2/5] blockjob: add pause points List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: qemu-devel@nongnu.org, Kevin Wolf , jjherne@linux.vnet.ibm.com, Paolo Bonzini , Jeff Cody , mreitz@redhat.com On Tue, 06/14 19:17, Stefan Hajnoczi wrote: > --- a/blockjob.c > +++ b/blockjob.c > @@ -247,6 +247,30 @@ void block_job_complete(BlockJob *job, Error **errp) > job->driver->complete(job, errp); > } > > +void block_job_pause_point(BlockJob *job) > +{ > + if (!block_job_is_paused(job)) { I find this check ... > + return; > + } > + if (block_job_is_cancelled(job)) { > + return; > + } > + > + if (job->driver->pause) { > + job->driver->pause(job); > + } > + > + job->paused = true; ... and this assignment confusing. After reading more, I think we ought to rename block_job_is_paused to block_job_should_pause and mark it static, in a separate patch. > + job->busy = false; > + qemu_coroutine_yield(); /* wait for block_job_resume() */ > + job->busy = true; > + job->paused = false; Worth to "assert(!job->pause_count)" (or "assert(!block_job_should_pause(job))")? Regardless, Reviewed-by: Fam Zheng > + > + if (job->driver->resume) { > + job->driver->resume(job); > + } > +} > +