From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=60979 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PhTg2-0001H4-T0 for qemu-devel@nongnu.org; Mon, 24 Jan 2011 16:10:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PhTg0-0007YC-Kb for qemu-devel@nongnu.org; Mon, 24 Jan 2011 16:10:17 -0500 Received: from mx1.redhat.com ([209.132.183.28]:3481) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PhTg0-0007Xr-9S for qemu-devel@nongnu.org; Mon, 24 Jan 2011 16:10:16 -0500 From: Kevin Wolf Date: Mon, 24 Jan 2011 22:10:48 +0100 Message-Id: <1295903452-18017-20-git-send-email-kwolf@redhat.com> In-Reply-To: <1295903452-18017-1-git-send-email-kwolf@redhat.com> References: <1295903452-18017-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 19/23] block: Use backing format driver during image creation List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org From: Stefan Hajnoczi The backing format should be honored during image creation. For some reason we currently use the image format to open the backing file. This fails when the backing file has a different format than the image being created. Keep the image and backing format drivers completely separate. Also print the backing filename if there is an error opening the backing file instead of the image filename. Signed-off-by: Stefan Hajnoczi Acked-by: Jes Sorensen Signed-off-by: Kevin Wolf --- block.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/block.c b/block.c index ff2795b..7ad3ddf 100644 --- a/block.c +++ b/block.c @@ -2778,6 +2778,7 @@ int bdrv_img_create(const char *filename, const char *fmt, QEMUOptionParameter *backing_fmt, *backing_file; BlockDriverState *bs = NULL; BlockDriver *drv, *proto_drv; + BlockDriver *backing_drv = NULL; int ret = 0; /* Find driver and parse its options */ @@ -2846,7 +2847,8 @@ int bdrv_img_create(const char *filename, const char *fmt, backing_fmt = get_option_parameter(param, BLOCK_OPT_BACKING_FMT); if (backing_fmt && backing_fmt->value.s) { - if (!bdrv_find_format(backing_fmt->value.s)) { + backing_drv = bdrv_find_format(backing_fmt->value.s); + if (!backing_drv) { error_report("Unknown backing file format '%s'", backing_fmt->value.s); ret = -EINVAL; @@ -2863,9 +2865,9 @@ int bdrv_img_create(const char *filename, const char *fmt, bs = bdrv_new(""); - ret = bdrv_open(bs, backing_file->value.s, flags, drv); + ret = bdrv_open(bs, backing_file->value.s, flags, backing_drv); if (ret < 0) { - error_report("Could not open '%s'", filename); + error_report("Could not open '%s'", backing_file->value.s); goto out; } bdrv_get_geometry(bs, &size); -- 1.7.2.3