[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v3 16/21] block: reopen: Extract QemuOpts for generi
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PATCH v3 16/21] block: reopen: Extract QemuOpts for generic block layer options |
Date: |
Fri, 4 Dec 2015 14:35:19 +0100 |
This patch adds a QemuOpts for generic block layer options to
bdrv_reopen_prepare(). The only two options that currently exist
(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>
Reviewed-by: Max Reitz <address@hidden>
---
block.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/block.c b/block.c
index 2dd2830..07763ff 100644
--- a/block.c
+++ b/block.c
@@ -1907,11 +1907,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) &&
@@ -1972,6 +1995,7 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
BlockReopenQueue *queue,
ret = 0;
error:
+ qemu_opts_del(opts);
return ret;
}
--
1.8.3.1
- [Qemu-block] [PATCH v3 07/21] block: Pass driver-specific options to .bdrv_refresh_filename(), (continued)
- [Qemu-block] [PATCH v3 07/21] block: Pass driver-specific options to .bdrv_refresh_filename(), Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 09/21] block: Allow specifying child options in reopen, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 10/21] block: reopen: Document option precedence and refactor accordingly, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 08/21] block: Keep "driver" in bs->options, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 11/21] block: Add infrastructure for option inheritance, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 13/21] block: Introduce bs->explicit_options, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 12/21] block: Split out parse_json_protocol(), Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 14/21] blockdev: Set 'format' indicates non-empty drive, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 15/21] qemu-iotests: Remove cache mode test without medium, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 16/21] block: reopen: Extract QemuOpts for generic block layer options,
Kevin Wolf <=
- [Qemu-block] [PATCH v3 18/21] blkdebug: Enable reopen, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 17/21] block: Move cache options into options QDict, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 19/21] qemu-iotests: Try setting cache mode for children, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 21/21] qemu-iotests: Test reopen with node-name/driver options, Kevin Wolf, 2015/12/04
- [Qemu-block] [PATCH v3 20/21] qemu-iotests: Test cache mode option inheritance, Kevin Wolf, 2015/12/04
- Re: [Qemu-block] [PATCH v3 00/21] block: Cache mode for children etc., Kevin Wolf, 2015/12/07