On Mon, 11/24 10:43, Max Reitz wrote: > When a vmdk image is created with a backing file, it is opened to check > whether it is indeed a vmdk file by letting qemu probe it. When doing > so, the backing filename is relative to the image's base directory so it > should be interpreted accordingly. > > Signed-off-by: Max Reitz <mre...@redhat.com> > --- > block/vmdk.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/block/vmdk.c b/block/vmdk.c > index 2cbfd3e..aea8f07 100644 > --- a/block/vmdk.c > +++ b/block/vmdk.c > @@ -1868,8 +1868,19 @@ static int vmdk_create(const char *filename, QemuOpts > *opts, Error **errp) > } > if (backing_file) { > BlockDriverState *bs = NULL; > - ret = bdrv_open(&bs, backing_file, NULL, NULL, BDRV_O_NO_BACKING, > NULL, > + char *full_backing = g_new0(char, PATH_MAX); > + bdrv_get_full_backing_filename_from_filename(filename, backing_file, > + full_backing, PATH_MAX, > + &local_err); > + if (local_err) { > + g_free(full_backing); > + error_propagate(errp, local_err); > + ret = -ENOENT; > + goto exit; > + } > + ret = bdrv_open(&bs, full_backing, NULL, NULL, BDRV_O_NO_BACKING, > NULL, > errp); > + g_free(full_backing); > if (ret != 0) { > goto exit; > } > -- > 1.9.3 > >
Reviewed-by: Fam Zheng <f...@redhat.com>