]> xenbits.xensource.com Git - qemu-upstream-4.3-testing.git/commitdiff
block: Fix the use of protocols in backing files
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Thu, 2 Dec 2010 16:54:13 +0000 (16:54 +0000)
committerKevin Wolf <kwolf@redhat.com>
Fri, 17 Dec 2010 15:10:59 +0000 (16:10 +0100)
Backing filenames may contain a protocol.  The code currently doesn't
consider this case and produces filenames that embed "<protocol>:".
Don't combine filenames if the backing filename contains a protocol.

Based on an earlier patch by Anthony Liguori <aliguori@us.ibm.com>.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block.c

diff --git a/block.c b/block.c
index 65fce8031a9f3fb0d8ab777446d0dbf2009a8bae..b4aaf416401744a692a0674618b57c1ac7880ebb 100644 (file)
--- 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 =