mirror of https://github.com/xqemu/xqemu.git
block: Allow recursive "file"s
It should be possible to use a format as a driver for a file which in turn requires another file, i.e., nesting file formats. Allowing nested file formats results in e.g. qcow2 BlockDriverStates never being directly passed to bdrv_open_common() from bdrv_file_open(), but instead being handed through bdrv_open(). This changes the error message when trying to give a filename to qcow2, i.e. trying to use it as a driver for the protocol level. Therefore, change the reference output of I/O test 051 accordingly. Signed-off-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
054963f8f0
commit
505d758334
9
block.c
9
block.c
|
@ -948,14 +948,19 @@ int bdrv_file_open(BlockDriverState **pbs, const char *filename,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
ret = bdrv_open_common(bs, NULL, options, flags, drv, &local_err);
|
||||
if (!drv->bdrv_file_open) {
|
||||
ret = bdrv_open(bs, filename, options, flags, drv, &local_err);
|
||||
options = NULL;
|
||||
} else {
|
||||
ret = bdrv_open_common(bs, NULL, options, flags, drv, &local_err);
|
||||
}
|
||||
if (ret < 0) {
|
||||
error_propagate(errp, local_err);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Check if any unknown options were used */
|
||||
if (qdict_size(options) != 0) {
|
||||
if (options && (qdict_size(options) != 0)) {
|
||||
const QDictEntry *entry = qdict_first(options);
|
||||
error_setg(errp, "Block protocol '%s' doesn't support the option '%s'",
|
||||
drv->format_name, entry->key);
|
||||
|
|
|
@ -222,7 +222,7 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||
(qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K
|
||||
|
||||
Testing: -drive file=TEST_DIR/t.qcow2,file.driver=qcow2
|
||||
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,file.driver=qcow2: could not open disk image TEST_DIR/t.qcow2: Can't use 'qcow2' as a block driver for the protocol level
|
||||
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,file.driver=qcow2: could not open disk image TEST_DIR/t.qcow2: Block format 'qcow2' used by device '' doesn't support the option 'filename'
|
||||
|
||||
|
||||
=== Parsing protocol from file name ===
|
||||
|
|
Loading…
Reference in New Issue