block: Pass reference to bdrv_file_open()

With that now being possible, bdrv_open() should try to extract a block
device reference from the options and pass it to bdrv_file_open().

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Max Reitz 2013-12-20 19:28:09 +01:00 committed by Kevin Wolf
parent 72daa72eee
commit 2258e3fe20

View File

@ -1056,6 +1056,7 @@ int bdrv_open(BlockDriverState *bs, const char *filename, QDict *options,
char tmp_filename[PATH_MAX + 1]; char tmp_filename[PATH_MAX + 1];
BlockDriverState *file = NULL; BlockDriverState *file = NULL;
QDict *file_options = NULL; QDict *file_options = NULL;
const char *file_reference;
const char *drvname; const char *drvname;
Error *local_err = NULL; Error *local_err = NULL;
@ -1142,9 +1143,11 @@ int bdrv_open(BlockDriverState *bs, const char *filename, QDict *options,
} }
qdict_extract_subqdict(options, &file_options, "file."); qdict_extract_subqdict(options, &file_options, "file.");
file_reference = qdict_get_try_str(options, "file");
ret = bdrv_file_open(&file, filename, NULL, file_options, ret = bdrv_file_open(&file, filename, file_reference, file_options,
bdrv_open_flags(bs, flags | BDRV_O_UNMAP), &local_err); bdrv_open_flags(bs, flags | BDRV_O_UNMAP), &local_err);
qdict_del(options, "file");
if (ret < 0) { if (ret < 0) {
goto fail; goto fail;
} }