From patchwork Mon Jan 24 09:32:20 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 80130 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 536EC1007D2 for ; Mon, 24 Jan 2011 20:59:55 +1100 (EST) Received: from localhost ([127.0.0.1]:36092 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PhJDE-0003Ws-8J for incoming@patchwork.ozlabs.org; Mon, 24 Jan 2011 04:59:52 -0500 Received: from [140.186.70.92] (port=49940 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PhImz-0002e7-S2 for qemu-devel@nongnu.org; Mon, 24 Jan 2011 04:32:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PhImy-0003U4-JO for qemu-devel@nongnu.org; Mon, 24 Jan 2011 04:32:45 -0500 Received: from mtagate4.uk.ibm.com ([194.196.100.164]:49749) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PhImy-0003Tn-C7 for qemu-devel@nongnu.org; Mon, 24 Jan 2011 04:32:44 -0500 Received: from d06nrmr1806.portsmouth.uk.ibm.com (d06nrmr1806.portsmouth.uk.ibm.com [9.149.39.193]) by mtagate4.uk.ibm.com (8.13.1/8.13.1) with ESMTP id p0O9WgaA006498 for ; Mon, 24 Jan 2011 09:32:42 GMT Received: from d06av07.portsmouth.uk.ibm.com (d06av07.portsmouth.uk.ibm.com [9.149.37.248]) by d06nrmr1806.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p0O9WgId1487018 for ; Mon, 24 Jan 2011 09:32:44 GMT Received: from d06av07.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av07.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p0O9WdHL013280 for ; Mon, 24 Jan 2011 02:32:39 -0700 Received: from stefanha-thinkpad.manchester-maybrook.uk.ibm.com (dyn-9-174-219-24.manchester-maybrook.uk.ibm.com [9.174.219.24]) by d06av07.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p0O9WcT2013249; Mon, 24 Jan 2011 02:32:38 -0700 From: Stefan Hajnoczi To: Date: Mon, 24 Jan 2011 09:32:20 +0000 Message-Id: <1295861540-28423-1-git-send-email-stefanha@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.2.3 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: Kevin Wolf , Jes Sorensen , xudong <706766@bugs.launchpad.net>, Stefan Hajnoczi Subject: [Qemu-devel] [PATCH] block: Use backing format driver during image creation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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);