From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=51189 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PPtxq-0006Au-IU for qemu-devel@nongnu.org; Tue, 07 Dec 2010 04:36:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PPtxp-0001Q9-Dq for qemu-devel@nongnu.org; Tue, 07 Dec 2010 04:36:02 -0500 Received: from mtagate7.uk.ibm.com ([194.196.100.167]:52830) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PPtxp-0001Ps-4s for qemu-devel@nongnu.org; Tue, 07 Dec 2010 04:36:01 -0500 Received: from d06nrmr1307.portsmouth.uk.ibm.com (d06nrmr1307.portsmouth.uk.ibm.com [9.149.38.129]) by mtagate7.uk.ibm.com (8.13.1/8.13.1) with ESMTP id oB79ZxMD029818 for ; Tue, 7 Dec 2010 09:35:59 GMT Received: from d06av05.portsmouth.uk.ibm.com (d06av05.portsmouth.uk.ibm.com [9.149.37.229]) by d06nrmr1307.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id oB79a0t93297356 for ; Tue, 7 Dec 2010 09:36:01 GMT Received: from d06av05.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av05.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id oB79ZxFe013018 for ; Tue, 7 Dec 2010 02:35:59 -0700 From: Stefan Hajnoczi Date: Tue, 7 Dec 2010 09:35:56 +0000 Message-Id: <1291714556-22961-5-git-send-email-stefanha@linux.vnet.ibm.com> In-Reply-To: <1291714556-22961-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1291714556-22961-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 4/4] qemu-img: Fail creation if backing format is invalid List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Stefan Hajnoczi The qemu-img create command should check the backing format to ensure only image files with valid backing formats are created. By checking in qemu-img.c we can print a useful error message. Signed-off-by: Stefan Hajnoczi --- qemu-img.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) diff --git a/qemu-img.c b/qemu-img.c index 23bb7dc..b10f363 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -300,6 +300,7 @@ static int img_create(int argc, char **argv) const char *base_filename = NULL; BlockDriver *drv, *proto_drv; QEMUOptionParameter *param = NULL, *create_options = NULL; + QEMUOptionParameter *backing_fmt = NULL; char *options = NULL; flags = 0; @@ -390,14 +391,22 @@ static int img_create(int argc, char **argv) goto out; } + 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)) { + error("Unknown backing file format '%s'", + backing_fmt->value.s); + ret = -1; + goto out; + } + } + // The size for the image must always be specified, with one exception: // If we are using a backing file, we can obtain the size from there if (get_option_parameter(param, BLOCK_OPT_SIZE)->value.n == -1) { QEMUOptionParameter *backing_file = get_option_parameter(param, BLOCK_OPT_BACKING_FILE); - QEMUOptionParameter *backing_fmt = - get_option_parameter(param, BLOCK_OPT_BACKING_FMT); if (backing_file && backing_file->value.s) { BlockDriverState *bs; @@ -406,14 +415,7 @@ static int img_create(int argc, char **argv) char buf[32]; if (backing_fmt && backing_fmt->value.s) { - if (bdrv_find_format(backing_fmt->value.s)) { - fmt = backing_fmt->value.s; - } else { - error("Unknown backing file format '%s'", - backing_fmt->value.s); - ret = -1; - goto out; - } + fmt = backing_fmt->value.s; } bs = bdrv_new_open(backing_file->value.s, fmt, BDRV_O_FLAGS); -- 1.7.2.3