This series acts as some kind of alternative or v4 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, 2 and 4 are taken directly from the block/json v3 (see backport-diff output). git-backport-diff against [PATCH v3 00/12] block/json: 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:[down] 'block: Allow JSON filenames' 004/4:[----] [-C] '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 | 123 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/089.out | 39 ++++++++++++++ tests/qemu-iotests/group | 1 + 7 files changed, 326 insertions(+) create mode 100755 tests/qemu-iotests/089 create mode 100644 tests/qemu-iotests/089.out -- 1.9.2