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


Reply via email to