From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45134) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRsbF-0003Bg-D4 for qemu-devel@nongnu.org; Wed, 10 Sep 2014 20:51:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XRsb9-0000dT-2n for qemu-devel@nongnu.org; Wed, 10 Sep 2014 20:51:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46311) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRsb8-0000dL-Pu for qemu-devel@nongnu.org; Wed, 10 Sep 2014 20:50:55 -0400 Date: Thu, 11 Sep 2014 08:50:45 +0800 From: Fam Zheng Message-ID: <20140911005045.GA2554@fam-t430.nay.redhat.com> References: <1408723870-7826-2-git-send-email-benoit.canet@nodalink.com> <20140825060424.GA17482@T430.nay.redhat.com> <20140825090611.GA18202@nodalink.com> <20140825093737.GA25434@T430.nay.redhat.com> <20140825121219.GB18202@nodalink.com> <20140826044204.GB2517@T430.nay.redhat.com> <20140826064554.GA13982@nodalink.com> <20140904204256.GF25226@stefanha-thinkpad.redhat.com> <20140910085419.GB26233@fam-t430.nay.redhat.com> <54106ADB.7060205@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <54106ADB.7060205@redhat.com> Subject: Re: [Qemu-devel] [PATCH] block: Make op blockers recursive List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: kwolf@redhat.com, Stefan Hajnoczi , jcody@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, =?iso-8859-1?Q?Beno=EEt?= Canet On Wed, 09/10 09:14, Eric Blake wrote: > On 09/10/2014 02:54 AM, Fam Zheng wrote: > > >> Let's think of a situation that recursive blockers protect but > >> backing_blocker does not: > >> > >> a <- b <- c <- d > >> > >> c is the backing file and is therefore protected by the op blocker. > >> > >> The block-commit command works with node-names, however, so we can > >> manipulate any nodes in the graph, not just the topmost one. Try this: > >> > >> block-commit d > >> block-commit b > >> > >> I haven't checked yet but I suspect it will launch two block-commit jobs > >> on the same partial chain (that's a bad thing because it can lead to > >> corruption). > > > > 1) Does block-commit work with node-names already? In other words, is > > block-commit b possible now? I only see drive-mirror works with it, but not > > drive-backup, block-mirror or block-commit. > > IIRC, Jeff Cody proposed patches for qemu 2.1 that would have done this, > but we dropped them for that release in order to get the recursive > blockers sorted out first. > > > > > 2) Regardless of the answer to 1), I think we could use a similar approach as > > drive-backup here: split BLOCK_OP_TYPE_COMMIT to > > BLOCK_OP_TYPE_COMMIT_{SOURCE,TARGET}, and only unblock > > BLOCK_OP_TYPE_COMMIT_TARGET in bdrv_set_backing_hd. > > In that earlier thread, Jeff had some ideas that it is not so much the > operation name that should be the blocker, but the lower-level action(s) > implied by each operation (read metadata, write metadata, read image, > write image) > Yes, that is a good idea. I had an open question back in that thread, which was whether we care about any other operation types at all - I think the only disruptive operations here are those that call bdrv_swap(). Any others? Fam