From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=48266 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PNePT-0003Tc-4o for qemu-devel@nongnu.org; Tue, 30 Nov 2010 23:35:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PNRv0-0005RK-Es for qemu-devel@nongnu.org; Tue, 30 Nov 2010 10:14:59 -0500 Received: from mtagate7.uk.ibm.com ([194.196.100.167]:38037) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PNRv0-0004yw-2q for qemu-devel@nongnu.org; Tue, 30 Nov 2010 10:14:58 -0500 Received: from d06nrmr1507.portsmouth.uk.ibm.com (d06nrmr1507.portsmouth.uk.ibm.com [9.149.38.233]) by mtagate7.uk.ibm.com (8.13.1/8.13.1) with ESMTP id oAUFEaGB021487 for ; Tue, 30 Nov 2010 15:14:36 GMT Received: from d06av12.portsmouth.uk.ibm.com (d06av12.portsmouth.uk.ibm.com [9.149.37.247]) by d06nrmr1507.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id oAUFEedM3133472 for ; Tue, 30 Nov 2010 15:14:40 GMT Received: from d06av12.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av12.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id oAUFEZmP014011 for ; Tue, 30 Nov 2010 08:14:35 -0700 From: Stefan Hajnoczi Date: Tue, 30 Nov 2010 15:14:16 +0000 Message-Id: <1291130056-32441-4-git-send-email-stefanha@linux.vnet.ibm.com> In-Reply-To: <1291130056-32441-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1291130056-32441-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 3/3] block: Fix the use of protocols in backing files List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Anthony Liguori , Stefan Hajnoczi Backing filenames may contain a protocol. The code currently doesn't consider this case and produces filenames that embed ":". Don't combine filenames if the backing filename contains a protocol. Based on an earlier patch by Anthony Liguori . Signed-off-by: Stefan Hajnoczi --- block.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) diff --git a/block.c b/block.c index 59b69e4..c9a6720 100644 --- a/block.c +++ b/block.c @@ -611,10 +611,17 @@ int bdrv_open(BlockDriverState *bs, const char *filename, int flags, BlockDriver *back_drv = NULL; bs->backing_hd = bdrv_new(""); - path_combine(backing_filename, sizeof(backing_filename), - filename, bs->backing_file); - if (bs->backing_format[0] != '\0') - back_drv = bdrv_find_format(bs->backing_format); + if (path_has_protocol(bs->backing_file)) { + back_drv = bdrv_find_protocol(bs->backing_file); + pstrcpy(backing_filename, sizeof(backing_filename), + bs->backing_file); + } else { + path_combine(backing_filename, sizeof(backing_filename), + filename, bs->backing_file); + if (bs->backing_format[0] != '\0') { + back_drv = bdrv_find_format(bs->backing_format); + } + } /* backing files always opened read-only */ back_flags = -- 1.7.2.3