First of all, sorry for the lengthy series that attacks more things than could fit in the subject line. However, for the most part the changes are hard to separate: Either it's just infrastructure without a user, or it's a user, but the infrastructure changes wouldn't be complete.
The only independent part that could be separated out are the qcow2 patches, but they are a nice demonstration of the new infrastructure somewhere about halfway through the series, so I thought it would be nice to leave them in anyway. Originally, the goal of the series was just to make cache modes configurable for backing files. However, I realised soon that while flags are inherited, the same thing is missing for arbitrary options. And then it turned out that there's bdrv_reopen(), too, and that that needs a bit more work if we don't want it to break... (see KVM Forum talk last year) So this is how it worked out - this series contains: - A common infrastructure for opening child nodes, so that... - ...the block layer knows all the children of a BDS now - ...VMDK allows passing options to individual extents - A node knows from which other node it inherited flags and options; this is respected when recalculating flags and options for child nodes on bdrv_reopen() (i.e. if the node didn't inherit originally from a parent node, it now doesn't on reopen either) - You can now use node name references for backing files - bdrv_reopen() accepts options now (and qcow2 makes use of it) - And finally you can set cache mode options for backing files and other children now (and the reopen behaviour even makes sense) Kevin Wolf (34): qdict: Add qdict_array_entries() qdict: Add qdict_{set,copy}_default() quorum: Use bdrv_open_image() vmdk: Use bdrv_open_image() block: Use macro for cache option names block: Use QemuOpts in bdrv_open_common() block: Move flag inheritance to bdrv_open_inherited() block: Add list of children to BlockDriverState block: Add BlockDriverState.inherits_from block: Fix reopen flag inheritance block: Allow references for backing files block: Allow specifying driver-specific options to reopen qemu-io: Add command 'reopen' qcow2: Factor out qcow2_update_options() qcow2: Move qcow2_update_options() call up qcow2: Move rest of option handling to qcow2_update_options() qcow2: Leave s unchanged on qcow2_update_options() failure qcow2: Fix memory leak in qcow2_update_options() error path qcow2: Make qcow2_update_options() suitable for transactions qcow2: Support updating driver-specific options in reopen block: Consider all block layer options in append_open_options block: Exclude nested options only for children in append_open_options() block: Pass driver-specific options to .bdrv_refresh_filename() block: Keep "driver" in bs->options block: Allow specifying child options in reopen block: reopen: Document option precedence and refactor accordingly block: Add infrastructure for option inheritance block: Introduce bs->explicit_options qemu-iotests: Remove cache mode test without medium block: reopen: Extract QemuOpts for generic block layer options block: Move cache options into options QDict qemu-iotests: Try setting cache mode for children qemu-iotests: Test cache mode option inheritance qemu-iotests: Test reopen with node-name/driver options block.c | 502 +++++++++++++++++++++++++---- block/blkdebug.c | 19 +- block/blkverify.c | 6 +- block/commit.c | 4 +- block/mirror.c | 2 +- block/nbd.c | 10 +- block/qcow2.c | 359 ++++++++++++++------- block/quorum.c | 53 +--- block/vmdk.c | 61 ++-- blockdev.c | 39 +-- include/block/block.h | 20 +- include/block/block_int.h | 24 +- include/qapi/qmp/qdict.h | 4 + qemu-io-cmds.c | 71 +++++ qobject/qdict.c | 102 +++++- tests/qemu-iotests/051 | 16 +- tests/qemu-iotests/051.out | 59 +++- tests/qemu-iotests/132 | 336 ++++++++++++++++++++ tests/qemu-iotests/132.out | 767 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/133 | 90 ++++++ tests/qemu-iotests/133.out | 22 ++ tests/qemu-iotests/group | 2 + 22 files changed, 2230 insertions(+), 338 deletions(-) create mode 100755 tests/qemu-iotests/132 create mode 100644 tests/qemu-iotests/132.out create mode 100755 tests/qemu-iotests/133 create mode 100644 tests/qemu-iotests/133.out -- 1.8.3.1