[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 31/32] qapi/options: QAPIfy --blockdev argument
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [RFC PATCH 31/32] qapi/options: QAPIfy --blockdev argument type |
Date: |
Mon, 2 Oct 2017 17:25:51 +0200 |
Signed-off-by: Markus Armbruster <address@hidden>
---
qapi/options.json | 2 +-
vl.c | 42 +++++++-----------------------------------
2 files changed, 8 insertions(+), 36 deletions(-)
diff --git a/qapi/options.json b/qapi/options.json
index eb1a3e2dde..d55c6bfa81 100644
--- a/qapi/options.json
+++ b/qapi/options.json
@@ -877,7 +877,7 @@
# !end texinfo
##
{ 'option': '--blockdev',
- 'data': 'str', # FIXME BlockdevOptions
+ 'data': 'BlockdevOptions', 'boxed': true,
'help': [
"-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap]",
" [,cache.direct=on|off][,cache.no-flush=on|off]",
diff --git a/vl.c b/vl.c
index 1814a53337..32f4b5fef3 100644
--- a/vl.c
+++ b/vl.c
@@ -3083,13 +3083,6 @@ int main(int argc, char **argv, char **envp)
Error *err = NULL;
bool list_data_dirs = false;
char **dirs;
- typedef struct BlockdevOptions_queue {
- BlockdevOptions *bdo;
- Location loc;
- QSIMPLEQ_ENTRY(BlockdevOptions_queue) entry;
- } BlockdevOptions_queue;
- QSIMPLEQ_HEAD(, BlockdevOptions_queue) bdo_queue
- = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
QAPIOption *qopt;
module_call_init(MODULE_INIT_TRACE);
@@ -3233,25 +3226,8 @@ int main(int argc, char **argv, char **envp)
drive_add(IF_DEFAULT, 3, qopt[i].u.hdb.data, HD_OPTS);
break;
case QAPI_OPTION_KIND_BLOCKDEV:
- {
- Visitor *v;
- BlockdevOptions_queue *bdo;
-
- v = qobject_input_visitor_new_str(qopt[i].u.blockdev.data,
- "driver", &err);
- if (!v) {
- error_report_err(err);
- exit(1);
- }
-
- bdo = g_new(BlockdevOptions_queue, 1);
- visit_type_BlockdevOptions(v, NULL, &bdo->bdo,
- &error_fatal);
- visit_free(v);
- loc_save(&bdo->loc);
- QSIMPLEQ_INSERT_TAIL(&bdo_queue, bdo, entry);
- break;
- }
+ /* nothing to do */
+ break;
case QAPI_OPTION_KIND_DRIVE:
if (drive_def(qopt[i].u.drive.data) == NULL) {
exit(1);
@@ -4651,15 +4627,11 @@ int main(int argc, char **argv, char **envp)
}
/* open the virtual block devices */
- while (!QSIMPLEQ_EMPTY(&bdo_queue)) {
- BlockdevOptions_queue *bdo = QSIMPLEQ_FIRST(&bdo_queue);
-
- QSIMPLEQ_REMOVE_HEAD(&bdo_queue, entry);
- loc_push_restore(&bdo->loc);
- qmp_blockdev_add(bdo->bdo, &error_fatal);
- loc_pop(&bdo->loc);
- qapi_free_BlockdevOptions(bdo->bdo);
- g_free(bdo);
+ for (i = 0; qopt[i].cnt; i++) {
+ if (qopt[i].type == QAPI_OPTION_KIND_BLOCKDEV) {
+ loc_set_cmdline(argv, qopt[i].idx, qopt[i].cnt);
+ qmp_blockdev_add(&qopt[i].u.blockdev, &error_fatal);
+ }
}
if (snapshot || replay_mode != REPLAY_MODE_NONE) {
qemu_opts_foreach(qemu_find_opts("drive"), drive_enable_snapshot,
--
2.13.6
- [Qemu-devel] [RFC PATCH 06/32] qapi2texi: Drop | example markup, (continued)
- [Qemu-devel] [RFC PATCH 06/32] qapi2texi: Drop | example markup, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 29/32] qapi/options: QAPIfy --echr argument type, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 32/32] qapi/options: QAPIfy --add-fd argument type, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 22/32] qapi: New helper c_string(), Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 30/32] qapi/options: QAPIfy --watchdog-action argument type, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 08/32] qapi: Simplify check_name() parameters, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 10/32] qapi: Don't run generators twice, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 31/32] qapi/options: QAPIfy --blockdev argument type,
Markus Armbruster <=
- [Qemu-devel] [RFC PATCH 05/32] qapi2texi: Provide access to Texinfo markup, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 21/32] qapi: Define QAPIOptionKind and QAPIOption automatically, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 23/32] qapi-options: Command line option backend, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 25/32] qapi-introspect: Include command line options information, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 20/32] qapi: Frontend for defining command line options, Markus Armbruster, 2017/10/02
- [Qemu-devel] [RFC PATCH 19/32] qapi: Accept double-quoted strings, Markus Armbruster, 2017/10/02