Instead of constantly keeping complaining that we need this big -blockdev things, let's start attacking individual parts of the project. Here is the first part, allowing block drivers to provide additional -drive options.
Any options that isn't processed by the block layer is passed to the driver which can use them. If it doesn't, you get an error message like today. At the end of this series you can specify: -drive file=test.qcow2,lazy_refcounts=on This is still quite rough and more of a quick hack, but I'd like to get some feedback on the general approach and for example if at least the user interface is acceptable. I thought -drive already mixes so many things, messing a bit more with it can't make things much worse, but you may disagree. Before merging this, I'll look into using QemuOpts a bit more (the manual parsing of the option in qcow2 definitely has to go away) and possibly allow specifying options for backing files or the protocol as well with a syntax like "backing.lazy_refcounts=on". If all options starts using this, maybe even something like "backing.cache=writeback" could be made to work. Kevin Wolf (6): block: Add options QDict to .bdrv_open() block: Add options QDict to bdrv_open() prototype Add qdict_clone_shallow() block: Add options QDict to bdrv_open_common() block: Support driver specific options in drive_init() qcow2: Allow lazy refcounts to be enabled on the command line block.c | 73 +++++++++++++++++++++++++++++++++++++++-------- block/blkverify.c | 2 +- block/bochs.c | 2 +- block/cloop.c | 2 +- block/cow.c | 2 +- block/dmg.c | 2 +- block/parallels.c | 2 +- block/qcow.c | 2 +- block/qcow2-cluster.c | 2 +- block/qcow2.c | 26 +++++++++++++++-- block/qcow2.h | 1 + block/qed.c | 4 +-- block/raw.c | 2 +- block/vdi.c | 2 +- block/vmdk.c | 4 +-- block/vpc.c | 2 +- block/vvfat.c | 2 +- blockdev.c | 63 +++++++++++++++++++++++++++++++++++----- hw/xen_disk.c | 2 +- include/block/block.h | 4 +-- include/block/block_int.h | 3 +- include/qapi/qmp/qdict.h | 2 ++ qemu-img.c | 6 ++-- qemu-io.c | 2 +- qemu-nbd.c | 2 +- qobject/qdict.c | 22 ++++++++++++++ 26 files changed, 191 insertions(+), 47 deletions(-) -- 1.8.1.2