[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 19/48] block: reopen: Extract QemuOpts for generic bl
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 19/48] block: reopen: Extract QemuOpts for generic block layer options |
Date: |
Fri, 18 Dec 2015 16:07:25 +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 a22c47c..d0d9669 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] [PULL 00/48] Block patches, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 01/48] iotests: 124: Split into two test classes, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 05/48] block: Fix reopen with semantically overlapping options, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 15/48] block: Split out parse_json_protocol(), Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 14/48] block: Add infrastructure for option inheritance, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 17/48] blockdev: Set 'format' indicates non-empty drive, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 19/48] block: reopen: Extract QemuOpts for generic block layer options,
Kevin Wolf <=
- [Qemu-block] [PULL 20/48] block: Move cache options into options QDict, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 21/48] blkdebug: Enable reopen, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 42/48] qemu-iotests: s390x: fix test 051, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 23/48] qemu-iotests: Test cache mode option inheritance, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 02/48] iotests: 124: move incremental failure test, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 45/48] block/qapi: always report full_backing_filename, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 43/48] qemu-iotests: s390x: fix test 068, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 44/48] block/qapi: do not redundantly print "actual path", Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 36/48] raw-posix: Make aio=native option binding, Kevin Wolf, 2015/12/18
- [Qemu-block] [PULL 41/48] qemu-iotests: refine common.config, Kevin Wolf, 2015/12/18