[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 00/34] block: Cache mode for children, reopen overha

From: Kevin Wolf
Subject: [Qemu-devel] [PATCH 00/34] block: Cache mode for children, reopen overhaul and more
Date: Fri, 8 May 2015 19:21:32 +0200

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
  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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]