@@ -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]",
@@ -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,
Signed-off-by: Markus Armbruster <armbru@redhat.com> --- qapi/options.json | 2 +- vl.c | 42 +++++++----------------------------------- 2 files changed, 8 insertions(+), 36 deletions(-)