This series adds a passthrough JSON protocol block driver. Its filenames are JSON objects prefixed by "json:". The objects are used as options for opening another block device which will be the child of the JSON device. Regarding this child device, the JSON driver behaves nearly the same as raw_bsd in that it is just a passthrough driver. The only difference is probably that the JSON driver identifies itself as a block filter, in contrast to raw_bsd.
The purpose of this driver 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. Max Reitz (10): qdict: Add qdict_join() block/json: Add JSON protocol driver block/json: Add functions for cache control block/json: Add functions for writing zeroes etc. block/json: Add bdrv_co_get_block_status() block/json: Add ioctl etc. block/json: Add bdrv_get_specific_info() block/raw_bsd: Add bdrv_get_specific_info() block/qapi: Ignore filters on top for format name iotests: Add test for the JSON protocol block/Makefile.objs | 2 +- block/json.c | 236 +++++++++++++++++++++++++++++++++++++++++++++ block/qapi.c | 20 +++- block/raw_bsd.c | 6 ++ include/qapi/qmp/qdict.h | 3 + qobject/qdict.c | 32 ++++++ tests/qemu-iotests/084 | 114 ++++++++++++++++++++++ tests/qemu-iotests/084.out | 39 ++++++++ tests/qemu-iotests/group | 1 + 9 files changed, 450 insertions(+), 3 deletions(-) create mode 100644 block/json.c create mode 100755 tests/qemu-iotests/084 create mode 100644 tests/qemu-iotests/084.out -- 1.9.0