Currently, the configuration of blkdebug and blkverify is done through the "filename" alone. There is now way of manually choosing blkdebug or blkverify as a driver and using a normal image filename.
In the case of blkdebug, the filename starts with the protocol prefix, follows up with the name of a configuration file and ends with the name of the image file. In the case of blkverify, the filename starts with the protocol prefix, follows up with the raw reference image filename and ends with the name of the image file. This patch allows the configuration of both drivers completely through command-line options. The driver has to be selected through the file.driver option (or similar), the image filename has to be given as the filename (obviously) and, depending on the driver, further options have to be given to control the behavior. In case of blkverify, the x-raw option specifies the name of the raw reference image file. In case of blkdebug, one may either set the config option to the filename of a configuration file, or the contents of the configuration file may be given directly on the command line (see description of patch 4 for an example). v2: - Addressed Fam's comments: - Added patch 3 - Fixed patch 4 and modified it to use the function introduced in patch 3 - Removed unnecessary error_propagate() in patch 1 (affects patches 5 and 6 as well) Max Reitz (7): blkdebug: Use errp for read_config() blkdebug: Don't require sophisticated filename qdict: Add qdict_array_split() qemu-option: Add qemu_config_parse_qdict() blkdebug: Always call read_config() blkdebug: Use command-line in read_config() blkverify: Don't require protocol filename block/blkdebug.c | 49 ++++++++++++++++-------- block/blkverify.c | 4 +- include/qapi/qmp/qdict.h | 1 + include/qemu/config-file.h | 6 +++ qobject/qdict.c | 36 ++++++++++++++++++ util/qemu-config.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 174 insertions(+), 17 deletions(-) -- 1.8.4.2