[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 00/34] block: Cache mode for children, reopen overha
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [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
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
- [Qemu-block] [PATCH 00/34] block: Cache mode for children, reopen overhaul and more,
Kevin Wolf <=