Received: from eggs.gnu.org ([2001:4830:134:3::10]:42563) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zm8MT-0007Yu-SO for qemu-devel@nongnu.org; Tue, 13 Oct 2015 18:48:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zm8MS-0003eK-SX for qemu-devel@nongnu.org; Tue, 13 Oct 2015 18:48:01 -0400 Date: Tue, 13 Oct 2015 18:47:53 -0400 From: Jeff Cody Message-ID: <20151013224753.GQ11943@localhost.localdomain> References: <6e347a922dffe8dc85d6b417f44772c483384739.1444640617.git.berto@igalia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6e347a922dffe8dc85d6b417f44772c483384739.1444640617.git.berto@igalia.com> Subject: Re: [Qemu-devel] [Qemu-block] [PATCH v7 3/5] block: support passing 'backing': '' to 'blockdev-add' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alberto Garcia Cc: Kevin Wolf , Stefan Hajnoczi , qemu-devel@nongnu.org, qemu-block@nongnu.org, Max Reitz On Mon, Oct 12, 2015 at 12:16:15PM +0300, Alberto Garcia wrote: > Passing an empty string allows opening an image but not its backing > file. This was already described in the API documentation, only the > implementation was missing. > > This is useful for creating snapshots using images opened with > blockdev-add, since they are not supposed to have a backing image > before the operation. > > Signed-off-by: Alberto Garcia > Reviewed-by: Max Reitz > Reviewed-by: Eric Blake > Reviewed-by: Kevin Wolf > --- > block.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/block.c b/block.c > index c9e3c6c..31d1b6e 100644 > --- a/block.c > +++ b/block.c > @@ -1406,6 +1406,7 @@ static int bdrv_open_inherit(BlockDriverState **pbs, const char *filename, > BlockDriverState *file = NULL, *bs; > BlockDriver *drv = NULL; > const char *drvname; > + const char *backing; > Error *local_err = NULL; > int snapshot_flags = 0; > > @@ -1473,6 +1474,12 @@ static int bdrv_open_inherit(BlockDriverState **pbs, const char *filename, > > assert(drvname || !(flags & BDRV_O_PROTOCOL)); > > + backing = qdict_get_try_str(options, "backing"); > + if (backing && *backing == '\0') { > + flags |= BDRV_O_NO_BACKING; > + qdict_del(options, "backing"); > + } > + > bs->open_flags = flags; > bs->options = options; > options = qdict_clone_shallow(options); > -- > 2.6.1 > > Reviewed-by: Jeff Cody