From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=51687 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PTeMV-0001C7-45 for qemu-devel@nongnu.org; Fri, 17 Dec 2010 12:45:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PTeLS-0002rW-BF for qemu-devel@nongnu.org; Fri, 17 Dec 2010 12:44:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34673) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PTeLS-0002rK-4W for qemu-devel@nongnu.org; Fri, 17 Dec 2010 12:43:54 -0500 From: Kevin Wolf Date: Fri, 17 Dec 2010 18:44:18 +0100 Message-Id: <1292607893-13461-4-git-send-email-kwolf@redhat.com> In-Reply-To: <1292607893-13461-1-git-send-email-kwolf@redhat.com> References: <1292607893-13461-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 03/38] 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: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org From: 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 Signed-off-by: Kevin Wolf --- block.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) diff --git a/block.c b/block.c index 65fce80..b4aaf41 100644 --- a/block.c +++ b/block.c @@ -611,10 +611,18 @@ 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') + + if (path_has_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