From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33099) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YxvQZ-00046E-LR for qemu-devel@nongnu.org; Thu, 28 May 2015 06:52:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YxvQY-0007xI-88 for qemu-devel@nongnu.org; Thu, 28 May 2015 06:52:43 -0400 Message-ID: <5566F36F.1010502@redhat.com> Date: Thu, 28 May 2015 12:52:31 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1432190583-10518-1-git-send-email-famz@redhat.com> <1432190583-10518-2-git-send-email-famz@redhat.com> <20150526142210.GI24077@noname.str.redhat.com> <55648220.1030206@redhat.com> <20150527090745.GA4669@noname.str.redhat.com> <55659372.9060804@redhat.com> <20150527101016.GB4669@noname.str.redhat.com> <55659FCC.2030704@redhat.com> <20150528024950.GC22609@dhcp-14-238.nay.redhat.com> <5566D076.8010807@redhat.com> <20150528104616.GA8461@dhcp-14-238.nay.redhat.com> In-Reply-To: <20150528104616.GA8461@dhcp-14-238.nay.redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v6 01/13] block: Add op blocker type "device IO" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: Kevin Wolf , qemu-block@nongnu.org, armbru@redhat.com, jcody@redhat.com, qemu-devel@nongnu.org, Max Reitz , Stefan Hajnoczi , amit.shah@redhat.com On 28/05/2015 12:46, Fam Zheng wrote: >> >=20 >> > Mirror needs to pause/resume the source. It doesn't need to handle >> > pause/resume of the target, does it? >> >=20 >>> > > So, in order for the solution to be general, and complete, this n= ofitier list >>> > > approach relies on the listening devices to do the right thing, w= hich requires >>> > > modifying all of them, and is harder to maintain. >> >=20 >> > Isn't it only devices that use aio_set_event_notifier for their ioev= entfd? > I think it's only the case for qmp_transaction, mirror job needs all bl= ock > devices to implement pause: mirror_run guarantees source and target in = sync > when it returns; but bdrv_swap is deferred to a main loop bottom half -= what > if there is a guest write to source in between? Whoever uses ioeventfd needs to implement pause/resume, yes---not just dataplane, also "regular" virtio-blk/virtio-scsi. However, everyone else should be okay, because the bottom half runs immediately and the big QEMU lock is not released in the meanwhile. So the CPUs have no occasion to run. This needs a comment! Paolo