This series acts as some kind of alternative or v6 to the "block/json: Add JSON protocol driver" series. It makes bdrv_open() parse filenames prefixed by "json:" as JSON objects (discarding the prefix beforehand) and then use the resulting QDict as the options for the block device to be opened with a NULL filename.
The purpose of this is that it may sometimes be desirable to specify options for a block device where only a filename can be given, e.g., for backing files. Using this should obviously be the exception, but it is nice to have if actually needed. After having written this series, I do indeed agree that it is much nicer than the old version of having a dedicated "virtual" block driver for this purpose. Patches 1 and 2 are taken directly from the block/json v3, patch 4 has been enriched by an additional scenario (options given both directly and through the filename) and its comments have been adapted to the new implementation. v3: - Prioritize options given directly over those in the filename, as the use case for this series is being able to implicitly specify options e.g. for a backing file; a user should be able to override those, however [Kevin] - Adapted the test case in patch 4 accordingly git-backport-diff against v2: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/4:[----] [--] 'qdict: Add qdict_join()' 002/4:[----] [--] 'check-qdict: Add test for qdict_join()' 003/4:[0010] [FC] 'block: Allow JSON filenames' 004/4:[0015] [FC] 'iotests: Add test for the JSON protocol' Max Reitz (4): qdict: Add qdict_join() check-qdict: Add test for qdict_join() block: Allow JSON filenames iotests: Add test for the JSON protocol block.c | 41 ++++++++++++++ include/qapi/qmp/qdict.h | 3 ++ qobject/qdict.c | 32 +++++++++++ tests/check-qdict.c | 87 ++++++++++++++++++++++++++++++ tests/qemu-iotests/089 | 130 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/089.out | 54 +++++++++++++++++++ tests/qemu-iotests/group | 1 + 7 files changed, 348 insertions(+) create mode 100755 tests/qemu-iotests/089 create mode 100644 tests/qemu-iotests/089.out -- 1.9.2