Signed-off-by: Anthony Liguori <aligu...@us.ibm.com>
diff --git a/block.c b/block.c
index 1a965b2..00b6f21 100644
--- a/block.c
+++ b/block.c
@@ -603,10 +603,16 @@ 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);
+ back_drv = bdrv_find_protocol(bs->backing_file);
+ if (!back_drv) {
+ 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);
+ } else {
+ pstrcpy(backing_filename, sizeof(backing_filename),
+ bs->backing_file);
+ }
/* backing files always opened read-only */
back_flags =
--
1.7.0.4