From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, berto@igalia.com, qemu-devel@nongnu.org,
mreitz@redhat.com
Subject: [Qemu-devel] [PATCH v3 09/21] block: Allow specifying child options in reopen
Date: Fri, 4 Dec 2015 14:35:12 +0100 [thread overview]
Message-ID: <1449236124-19605-10-git-send-email-kwolf@redhat.com> (raw)
In-Reply-To: <1449236124-19605-1-git-send-email-kwolf@redhat.com>
If the child was defined in the same context (-drive argument or
blockdev-add QMP command) as its parent, a reopen of the parent should
work the same and allow changing options of the child.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
---
block.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/block.c b/block.c
index 2728bc5..a800d9e 100644
--- a/block.c
+++ b/block.c
@@ -1720,15 +1720,23 @@ BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue *bs_queue,
flags &= ~BDRV_O_PROTOCOL;
QLIST_FOREACH(child, &bs->children, next) {
+ QDict *new_child_options;
+ char *child_key_dot;
int child_flags;
+ /* reopen can only change the options of block devices that were
+ * implicitly created and inherited options. For other (referenced)
+ * block devices, a syntax like "backing.foo" results in an error. */
if (child->bs->inherits_from != bs) {
continue;
}
+ child_key_dot = g_strdup_printf("%s.", child->name);
+ qdict_extract_subqdict(options, &new_child_options, child_key_dot);
+ g_free(child_key_dot);
+
child_flags = child->role->inherit_flags(flags);
- /* TODO Pass down child flags (backing.*, extents.*, ...) */
- bdrv_reopen_queue(bs_queue, child->bs, NULL, child_flags);
+ bdrv_reopen_queue(bs_queue, child->bs, new_child_options, child_flags);
}
bs_entry = g_new0(BlockReopenQueueEntry, 1);
--
1.8.3.1
next prev parent reply other threads:[~2015-12-04 13:35 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-04 13:35 [Qemu-devel] [PATCH v3 00/21] block: Cache mode for children etc Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 01/21] qcow2: Add .bdrv_join_options callback Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 02/21] block: Fix reopen with semantically overlapping options Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 03/21] mirror: Error out when a BDS would get two BBs Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 04/21] block: Allow references for backing files Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 05/21] block: Consider all block layer options in append_open_options Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 06/21] block: Exclude nested options only for children in append_open_options() Kevin Wolf
2015-12-04 21:47 ` Max Reitz
2015-12-15 2:16 ` Wen Congyang
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 07/21] block: Pass driver-specific options to .bdrv_refresh_filename() Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 08/21] block: Keep "driver" in bs->options Kevin Wolf
2015-12-04 13:35 ` Kevin Wolf [this message]
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 10/21] block: reopen: Document option precedence and refactor accordingly Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 11/21] block: Add infrastructure for option inheritance Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 12/21] block: Split out parse_json_protocol() Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 13/21] block: Introduce bs->explicit_options Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 14/21] blockdev: Set 'format' indicates non-empty drive Kevin Wolf
2015-12-04 21:59 ` Max Reitz
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 15/21] qemu-iotests: Remove cache mode test without medium Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 16/21] block: reopen: Extract QemuOpts for generic block layer options Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 17/21] block: Move cache options into options QDict Kevin Wolf
2015-12-04 22:07 ` Max Reitz
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 18/21] blkdebug: Enable reopen Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 19/21] qemu-iotests: Try setting cache mode for children Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 20/21] qemu-iotests: Test cache mode option inheritance Kevin Wolf
2015-12-04 13:35 ` [Qemu-devel] [PATCH v3 21/21] qemu-iotests: Test reopen with node-name/driver options Kevin Wolf
2015-12-07 9:25 ` [Qemu-devel] [PATCH v3 00/21] block: Cache mode for children etc Kevin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1449236124-19605-10-git-send-email-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=berto@igalia.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).