[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 13/22] block: Allow recursive "file"s
From: |
Max Reitz |
Subject: |
[Qemu-devel] [PATCH v6 13/22] block: Allow recursive "file"s |
Date: |
Thu, 19 Dec 2013 20:47:14 +0100 |
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 <address@hidden>
---
block.c | 9 +++++++--
tests/qemu-iotests/051.out | 2 +-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/block.c b/block.c
index 9e4e85f..6af5f6e 100644
--- a/block.c
+++ b/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);
diff --git a/tests/qemu-iotests/051.out b/tests/qemu-iotests/051.out
index 49e95a2..121ca66 100644
--- a/tests/qemu-iotests/051.out
+++ b/tests/qemu-iotests/051.out
@@ -223,7 +223,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 ===
--
1.8.5.1
- [Qemu-devel] [PATCH v6 03/22] qdict: Add qdict_array_split(), (continued)
- [Qemu-devel] [PATCH v6 03/22] qdict: Add qdict_array_split(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 04/22] qapi: extend qdict_flatten() for QLists, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 05/22] qemu-option: Add qemu_config_parse_qdict(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 06/22] blkdebug: Always call read_config(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 07/22] blkdebug: Use command-line in read_config(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 08/22] block: Allow reference for bdrv_file_open(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 09/22] block: Pass reference to bdrv_file_open(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 10/22] block: Allow block devices without files, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 11/22] block: Add bdrv_open_image(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 12/22] block: Use bdrv_open_image() in bdrv_open(), Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 13/22] block: Allow recursive "file"s,
Max Reitz <=
- [Qemu-devel] [PATCH v6 14/22] blockdev: Move "file" to legacy_opts, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 15/22] blkdebug: Allow command-line file configuration, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 16/22] blkverify: Allow command-line configuration, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 18/22] qapi: Add "errno" to the list of polluted words, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 17/22] blkverify: Don't require protocol filename, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 19/22] qapi: QMP interface for blkdebug and blkverify, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 20/22] qemu-io: Make filename optional, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 21/22] iotests: Test new blkdebug/blkverify interface, Max Reitz, 2013/12/19
- [Qemu-devel] [PATCH v6 22/22] iotests: Test file format nesting, Max Reitz, 2013/12/19