[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 30/34] block: reopen: Extract QemuOpts for generic b
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 30/34] block: reopen: Extract QemuOpts for generic block layer options |
Date: |
Fri, 8 May 2015 19:22:02 +0200 |
This patch adds a QemuOpts for generic block layer options to
bdrv_reopen_prepare(). The only two options that exist currently
(node-name and driver) cannot be changed, so the only thing we do is
putting them right back into the QDict so that we check at the end that
they are indeed unchanged.
We will add new options soon that can actually be changed.
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/block.c b/block.c
index d76e385..8faa5ce 100644
--- a/block.c
+++ b/block.c
@@ -1808,11 +1808,34 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
BlockReopenQueue *queue,
int ret = -1;
Error *local_err = NULL;
BlockDriver *drv;
+ QemuOpts *opts;
+ const char *value;
assert(reopen_state != NULL);
assert(reopen_state->bs->drv != NULL);
drv = reopen_state->bs->drv;
+ /* Process generic block layer options */
+ opts = qemu_opts_create(&bdrv_runtime_opts, NULL, 0, &error_abort);
+ qemu_opts_absorb_qdict(opts, reopen_state->options, &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ ret = -EINVAL;
+ goto error;
+ }
+
+ /* node-name and driver must be unchanged. Put them back into the QDict, so
+ * that they are checked at the end of this function. */
+ value = qemu_opt_get(opts, "node-name");
+ if (value) {
+ qdict_put(reopen_state->options, "node-name", qstring_from_str(value));
+ }
+
+ value = qemu_opt_get(opts, "driver");
+ if (value) {
+ qdict_put(reopen_state->options, "driver", qstring_from_str(value));
+ }
+
/* if we are to stay read-only, do not allow permission change
* to r/w */
if (!(reopen_state->bs->open_flags & BDRV_O_ALLOW_RDWR) &&
@@ -1874,6 +1897,7 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
BlockReopenQueue *queue,
ret = 0;
error:
+ qemu_opts_del(opts);
return ret;
}
--
1.8.3.1
- Re: [Qemu-devel] [PATCH 26/34] block: reopen: Document option precedence and refactor accordingly, (continued)
- [Qemu-devel] [PATCH 24/34] block: Keep "driver" in bs->options, Kevin Wolf, 2015/05/08
- [Qemu-devel] [PATCH 27/34] block: Add infrastructure for option inheritance, Kevin Wolf, 2015/05/08
- [Qemu-devel] [PATCH 28/34] block: Introduce bs->explicit_options, Kevin Wolf, 2015/05/08
- [Qemu-devel] [PATCH 29/34] qemu-iotests: Remove cache mode test without medium, Kevin Wolf, 2015/05/08
- [Qemu-devel] [PATCH 30/34] block: reopen: Extract QemuOpts for generic block layer options,
Kevin Wolf <=
- [Qemu-devel] [PATCH 31/34] block: Move cache options into options QDict, Kevin Wolf, 2015/05/08
- [Qemu-devel] [PATCH 32/34] qemu-iotests: Try setting cache mode for children, Kevin Wolf, 2015/05/08
- [Qemu-devel] [PATCH 34/34] qemu-iotests: Test reopen with node-name/driver options, Kevin Wolf, 2015/05/08
- [Qemu-devel] [PATCH 33/34] qemu-iotests: Test cache mode option inheritance, Kevin Wolf, 2015/05/08