1 | /* AUTOMATICALLY GENERATED, DO NOT MODIFY */ |
2 | |
3 | /* |
4 | * Schema-defined QAPI/QMP commands |
5 | * |
6 | * Copyright IBM, Corp. 2011 |
7 | * Copyright (C) 2014-2018 Red Hat, Inc. |
8 | * |
9 | * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. |
10 | * See the COPYING.LIB file in the top-level directory. |
11 | */ |
12 | |
13 | #include "qemu/osdep.h" |
14 | #include "qapi/visitor.h" |
15 | #include "qapi/qmp/qdict.h" |
16 | #include "qapi/qobject-output-visitor.h" |
17 | #include "qapi/qobject-input-visitor.h" |
18 | #include "qapi/dealloc-visitor.h" |
19 | #include "qapi/error.h" |
20 | #include "qapi-visit-block-core.h" |
21 | #include "qapi-commands-block-core.h" |
22 | |
23 | |
24 | void qmp_marshal_block_latency_histogram_set(QDict *args, QObject **ret, Error **errp) |
25 | { |
26 | Error *err = NULL; |
27 | Visitor *v; |
28 | q_obj_block_latency_histogram_set_arg arg = {0}; |
29 | |
30 | v = qobject_input_visitor_new(QOBJECT(args)); |
31 | visit_start_struct(v, NULL, NULL, 0, &err); |
32 | if (err) { |
33 | goto out; |
34 | } |
35 | visit_type_q_obj_block_latency_histogram_set_arg_members(v, &arg, &err); |
36 | if (!err) { |
37 | visit_check_struct(v, &err); |
38 | } |
39 | visit_end_struct(v, NULL); |
40 | if (err) { |
41 | goto out; |
42 | } |
43 | |
44 | qmp_block_latency_histogram_set(arg.id, arg.has_boundaries, arg.boundaries, arg.has_boundaries_read, arg.boundaries_read, arg.has_boundaries_write, arg.boundaries_write, arg.has_boundaries_flush, arg.boundaries_flush, &err); |
45 | |
46 | out: |
47 | error_propagate(errp, err); |
48 | visit_free(v); |
49 | v = qapi_dealloc_visitor_new(); |
50 | visit_start_struct(v, NULL, NULL, 0, NULL); |
51 | visit_type_q_obj_block_latency_histogram_set_arg_members(v, &arg, NULL); |
52 | visit_end_struct(v, NULL); |
53 | visit_free(v); |
54 | } |
55 | |
56 | static void qmp_marshal_output_BlockInfoList(BlockInfoList *ret_in, QObject **ret_out, Error **errp) |
57 | { |
58 | Error *err = NULL; |
59 | Visitor *v; |
60 | |
61 | v = qobject_output_visitor_new(ret_out); |
62 | visit_type_BlockInfoList(v, "unused" , &ret_in, &err); |
63 | if (!err) { |
64 | visit_complete(v, ret_out); |
65 | } |
66 | error_propagate(errp, err); |
67 | visit_free(v); |
68 | v = qapi_dealloc_visitor_new(); |
69 | visit_type_BlockInfoList(v, "unused" , &ret_in, NULL); |
70 | visit_free(v); |
71 | } |
72 | |
73 | void qmp_marshal_query_block(QDict *args, QObject **ret, Error **errp) |
74 | { |
75 | Error *err = NULL; |
76 | BlockInfoList *retval; |
77 | Visitor *v = NULL; |
78 | |
79 | if (args) { |
80 | v = qobject_input_visitor_new(QOBJECT(args)); |
81 | visit_start_struct(v, NULL, NULL, 0, &err); |
82 | if (err) { |
83 | goto out; |
84 | } |
85 | |
86 | if (!err) { |
87 | visit_check_struct(v, &err); |
88 | } |
89 | visit_end_struct(v, NULL); |
90 | if (err) { |
91 | goto out; |
92 | } |
93 | } |
94 | |
95 | retval = qmp_query_block(&err); |
96 | if (err) { |
97 | goto out; |
98 | } |
99 | |
100 | qmp_marshal_output_BlockInfoList(retval, ret, &err); |
101 | |
102 | out: |
103 | error_propagate(errp, err); |
104 | visit_free(v); |
105 | if (args) { |
106 | v = qapi_dealloc_visitor_new(); |
107 | visit_start_struct(v, NULL, NULL, 0, NULL); |
108 | |
109 | visit_end_struct(v, NULL); |
110 | visit_free(v); |
111 | } |
112 | } |
113 | |
114 | static void qmp_marshal_output_BlockStatsList(BlockStatsList *ret_in, QObject **ret_out, Error **errp) |
115 | { |
116 | Error *err = NULL; |
117 | Visitor *v; |
118 | |
119 | v = qobject_output_visitor_new(ret_out); |
120 | visit_type_BlockStatsList(v, "unused" , &ret_in, &err); |
121 | if (!err) { |
122 | visit_complete(v, ret_out); |
123 | } |
124 | error_propagate(errp, err); |
125 | visit_free(v); |
126 | v = qapi_dealloc_visitor_new(); |
127 | visit_type_BlockStatsList(v, "unused" , &ret_in, NULL); |
128 | visit_free(v); |
129 | } |
130 | |
131 | void qmp_marshal_query_blockstats(QDict *args, QObject **ret, Error **errp) |
132 | { |
133 | Error *err = NULL; |
134 | BlockStatsList *retval; |
135 | Visitor *v; |
136 | q_obj_query_blockstats_arg arg = {0}; |
137 | |
138 | v = qobject_input_visitor_new(QOBJECT(args)); |
139 | visit_start_struct(v, NULL, NULL, 0, &err); |
140 | if (err) { |
141 | goto out; |
142 | } |
143 | visit_type_q_obj_query_blockstats_arg_members(v, &arg, &err); |
144 | if (!err) { |
145 | visit_check_struct(v, &err); |
146 | } |
147 | visit_end_struct(v, NULL); |
148 | if (err) { |
149 | goto out; |
150 | } |
151 | |
152 | retval = qmp_query_blockstats(arg.has_query_nodes, arg.query_nodes, &err); |
153 | if (err) { |
154 | goto out; |
155 | } |
156 | |
157 | qmp_marshal_output_BlockStatsList(retval, ret, &err); |
158 | |
159 | out: |
160 | error_propagate(errp, err); |
161 | visit_free(v); |
162 | v = qapi_dealloc_visitor_new(); |
163 | visit_start_struct(v, NULL, NULL, 0, NULL); |
164 | visit_type_q_obj_query_blockstats_arg_members(v, &arg, NULL); |
165 | visit_end_struct(v, NULL); |
166 | visit_free(v); |
167 | } |
168 | |
169 | static void qmp_marshal_output_BlockJobInfoList(BlockJobInfoList *ret_in, QObject **ret_out, Error **errp) |
170 | { |
171 | Error *err = NULL; |
172 | Visitor *v; |
173 | |
174 | v = qobject_output_visitor_new(ret_out); |
175 | visit_type_BlockJobInfoList(v, "unused" , &ret_in, &err); |
176 | if (!err) { |
177 | visit_complete(v, ret_out); |
178 | } |
179 | error_propagate(errp, err); |
180 | visit_free(v); |
181 | v = qapi_dealloc_visitor_new(); |
182 | visit_type_BlockJobInfoList(v, "unused" , &ret_in, NULL); |
183 | visit_free(v); |
184 | } |
185 | |
186 | void qmp_marshal_query_block_jobs(QDict *args, QObject **ret, Error **errp) |
187 | { |
188 | Error *err = NULL; |
189 | BlockJobInfoList *retval; |
190 | Visitor *v = NULL; |
191 | |
192 | if (args) { |
193 | v = qobject_input_visitor_new(QOBJECT(args)); |
194 | visit_start_struct(v, NULL, NULL, 0, &err); |
195 | if (err) { |
196 | goto out; |
197 | } |
198 | |
199 | if (!err) { |
200 | visit_check_struct(v, &err); |
201 | } |
202 | visit_end_struct(v, NULL); |
203 | if (err) { |
204 | goto out; |
205 | } |
206 | } |
207 | |
208 | retval = qmp_query_block_jobs(&err); |
209 | if (err) { |
210 | goto out; |
211 | } |
212 | |
213 | qmp_marshal_output_BlockJobInfoList(retval, ret, &err); |
214 | |
215 | out: |
216 | error_propagate(errp, err); |
217 | visit_free(v); |
218 | if (args) { |
219 | v = qapi_dealloc_visitor_new(); |
220 | visit_start_struct(v, NULL, NULL, 0, NULL); |
221 | |
222 | visit_end_struct(v, NULL); |
223 | visit_free(v); |
224 | } |
225 | } |
226 | |
227 | void qmp_marshal_block_passwd(QDict *args, QObject **ret, Error **errp) |
228 | { |
229 | Error *err = NULL; |
230 | Visitor *v; |
231 | q_obj_block_passwd_arg arg = {0}; |
232 | |
233 | v = qobject_input_visitor_new(QOBJECT(args)); |
234 | visit_start_struct(v, NULL, NULL, 0, &err); |
235 | if (err) { |
236 | goto out; |
237 | } |
238 | visit_type_q_obj_block_passwd_arg_members(v, &arg, &err); |
239 | if (!err) { |
240 | visit_check_struct(v, &err); |
241 | } |
242 | visit_end_struct(v, NULL); |
243 | if (err) { |
244 | goto out; |
245 | } |
246 | |
247 | qmp_block_passwd(arg.has_device, arg.device, arg.has_node_name, arg.node_name, arg.password, &err); |
248 | |
249 | out: |
250 | error_propagate(errp, err); |
251 | visit_free(v); |
252 | v = qapi_dealloc_visitor_new(); |
253 | visit_start_struct(v, NULL, NULL, 0, NULL); |
254 | visit_type_q_obj_block_passwd_arg_members(v, &arg, NULL); |
255 | visit_end_struct(v, NULL); |
256 | visit_free(v); |
257 | } |
258 | |
259 | void qmp_marshal_block_resize(QDict *args, QObject **ret, Error **errp) |
260 | { |
261 | Error *err = NULL; |
262 | Visitor *v; |
263 | q_obj_block_resize_arg arg = {0}; |
264 | |
265 | v = qobject_input_visitor_new(QOBJECT(args)); |
266 | visit_start_struct(v, NULL, NULL, 0, &err); |
267 | if (err) { |
268 | goto out; |
269 | } |
270 | visit_type_q_obj_block_resize_arg_members(v, &arg, &err); |
271 | if (!err) { |
272 | visit_check_struct(v, &err); |
273 | } |
274 | visit_end_struct(v, NULL); |
275 | if (err) { |
276 | goto out; |
277 | } |
278 | |
279 | qmp_block_resize(arg.has_device, arg.device, arg.has_node_name, arg.node_name, arg.size, &err); |
280 | |
281 | out: |
282 | error_propagate(errp, err); |
283 | visit_free(v); |
284 | v = qapi_dealloc_visitor_new(); |
285 | visit_start_struct(v, NULL, NULL, 0, NULL); |
286 | visit_type_q_obj_block_resize_arg_members(v, &arg, NULL); |
287 | visit_end_struct(v, NULL); |
288 | visit_free(v); |
289 | } |
290 | |
291 | void qmp_marshal_blockdev_snapshot_sync(QDict *args, QObject **ret, Error **errp) |
292 | { |
293 | Error *err = NULL; |
294 | Visitor *v; |
295 | BlockdevSnapshotSync arg = {0}; |
296 | |
297 | v = qobject_input_visitor_new(QOBJECT(args)); |
298 | visit_start_struct(v, NULL, NULL, 0, &err); |
299 | if (err) { |
300 | goto out; |
301 | } |
302 | visit_type_BlockdevSnapshotSync_members(v, &arg, &err); |
303 | if (!err) { |
304 | visit_check_struct(v, &err); |
305 | } |
306 | visit_end_struct(v, NULL); |
307 | if (err) { |
308 | goto out; |
309 | } |
310 | |
311 | qmp_blockdev_snapshot_sync(arg.has_device, arg.device, arg.has_node_name, arg.node_name, arg.snapshot_file, arg.has_snapshot_node_name, arg.snapshot_node_name, arg.has_format, arg.format, arg.has_mode, arg.mode, &err); |
312 | |
313 | out: |
314 | error_propagate(errp, err); |
315 | visit_free(v); |
316 | v = qapi_dealloc_visitor_new(); |
317 | visit_start_struct(v, NULL, NULL, 0, NULL); |
318 | visit_type_BlockdevSnapshotSync_members(v, &arg, NULL); |
319 | visit_end_struct(v, NULL); |
320 | visit_free(v); |
321 | } |
322 | |
323 | void qmp_marshal_blockdev_snapshot(QDict *args, QObject **ret, Error **errp) |
324 | { |
325 | Error *err = NULL; |
326 | Visitor *v; |
327 | BlockdevSnapshot arg = {0}; |
328 | |
329 | v = qobject_input_visitor_new(QOBJECT(args)); |
330 | visit_start_struct(v, NULL, NULL, 0, &err); |
331 | if (err) { |
332 | goto out; |
333 | } |
334 | visit_type_BlockdevSnapshot_members(v, &arg, &err); |
335 | if (!err) { |
336 | visit_check_struct(v, &err); |
337 | } |
338 | visit_end_struct(v, NULL); |
339 | if (err) { |
340 | goto out; |
341 | } |
342 | |
343 | qmp_blockdev_snapshot(arg.node, arg.overlay, &err); |
344 | |
345 | out: |
346 | error_propagate(errp, err); |
347 | visit_free(v); |
348 | v = qapi_dealloc_visitor_new(); |
349 | visit_start_struct(v, NULL, NULL, 0, NULL); |
350 | visit_type_BlockdevSnapshot_members(v, &arg, NULL); |
351 | visit_end_struct(v, NULL); |
352 | visit_free(v); |
353 | } |
354 | |
355 | void qmp_marshal_change_backing_file(QDict *args, QObject **ret, Error **errp) |
356 | { |
357 | Error *err = NULL; |
358 | Visitor *v; |
359 | q_obj_change_backing_file_arg arg = {0}; |
360 | |
361 | v = qobject_input_visitor_new(QOBJECT(args)); |
362 | visit_start_struct(v, NULL, NULL, 0, &err); |
363 | if (err) { |
364 | goto out; |
365 | } |
366 | visit_type_q_obj_change_backing_file_arg_members(v, &arg, &err); |
367 | if (!err) { |
368 | visit_check_struct(v, &err); |
369 | } |
370 | visit_end_struct(v, NULL); |
371 | if (err) { |
372 | goto out; |
373 | } |
374 | |
375 | qmp_change_backing_file(arg.device, arg.image_node_name, arg.backing_file, &err); |
376 | |
377 | out: |
378 | error_propagate(errp, err); |
379 | visit_free(v); |
380 | v = qapi_dealloc_visitor_new(); |
381 | visit_start_struct(v, NULL, NULL, 0, NULL); |
382 | visit_type_q_obj_change_backing_file_arg_members(v, &arg, NULL); |
383 | visit_end_struct(v, NULL); |
384 | visit_free(v); |
385 | } |
386 | |
387 | void qmp_marshal_block_commit(QDict *args, QObject **ret, Error **errp) |
388 | { |
389 | Error *err = NULL; |
390 | Visitor *v; |
391 | q_obj_block_commit_arg arg = {0}; |
392 | |
393 | v = qobject_input_visitor_new(QOBJECT(args)); |
394 | visit_start_struct(v, NULL, NULL, 0, &err); |
395 | if (err) { |
396 | goto out; |
397 | } |
398 | visit_type_q_obj_block_commit_arg_members(v, &arg, &err); |
399 | if (!err) { |
400 | visit_check_struct(v, &err); |
401 | } |
402 | visit_end_struct(v, NULL); |
403 | if (err) { |
404 | goto out; |
405 | } |
406 | |
407 | qmp_block_commit(arg.has_job_id, arg.job_id, arg.device, arg.has_base_node, arg.base_node, arg.has_base, arg.base, arg.has_top_node, arg.top_node, arg.has_top, arg.top, arg.has_backing_file, arg.backing_file, arg.has_speed, arg.speed, arg.has_filter_node_name, arg.filter_node_name, arg.has_auto_finalize, arg.auto_finalize, arg.has_auto_dismiss, arg.auto_dismiss, &err); |
408 | |
409 | out: |
410 | error_propagate(errp, err); |
411 | visit_free(v); |
412 | v = qapi_dealloc_visitor_new(); |
413 | visit_start_struct(v, NULL, NULL, 0, NULL); |
414 | visit_type_q_obj_block_commit_arg_members(v, &arg, NULL); |
415 | visit_end_struct(v, NULL); |
416 | visit_free(v); |
417 | } |
418 | |
419 | void qmp_marshal_drive_backup(QDict *args, QObject **ret, Error **errp) |
420 | { |
421 | Error *err = NULL; |
422 | Visitor *v; |
423 | DriveBackup arg = {0}; |
424 | |
425 | v = qobject_input_visitor_new(QOBJECT(args)); |
426 | visit_start_struct(v, NULL, NULL, 0, &err); |
427 | if (err) { |
428 | goto out; |
429 | } |
430 | visit_type_DriveBackup_members(v, &arg, &err); |
431 | if (!err) { |
432 | visit_check_struct(v, &err); |
433 | } |
434 | visit_end_struct(v, NULL); |
435 | if (err) { |
436 | goto out; |
437 | } |
438 | |
439 | qmp_drive_backup(&arg, &err); |
440 | |
441 | out: |
442 | error_propagate(errp, err); |
443 | visit_free(v); |
444 | v = qapi_dealloc_visitor_new(); |
445 | visit_start_struct(v, NULL, NULL, 0, NULL); |
446 | visit_type_DriveBackup_members(v, &arg, NULL); |
447 | visit_end_struct(v, NULL); |
448 | visit_free(v); |
449 | } |
450 | |
451 | void qmp_marshal_blockdev_backup(QDict *args, QObject **ret, Error **errp) |
452 | { |
453 | Error *err = NULL; |
454 | Visitor *v; |
455 | BlockdevBackup arg = {0}; |
456 | |
457 | v = qobject_input_visitor_new(QOBJECT(args)); |
458 | visit_start_struct(v, NULL, NULL, 0, &err); |
459 | if (err) { |
460 | goto out; |
461 | } |
462 | visit_type_BlockdevBackup_members(v, &arg, &err); |
463 | if (!err) { |
464 | visit_check_struct(v, &err); |
465 | } |
466 | visit_end_struct(v, NULL); |
467 | if (err) { |
468 | goto out; |
469 | } |
470 | |
471 | qmp_blockdev_backup(&arg, &err); |
472 | |
473 | out: |
474 | error_propagate(errp, err); |
475 | visit_free(v); |
476 | v = qapi_dealloc_visitor_new(); |
477 | visit_start_struct(v, NULL, NULL, 0, NULL); |
478 | visit_type_BlockdevBackup_members(v, &arg, NULL); |
479 | visit_end_struct(v, NULL); |
480 | visit_free(v); |
481 | } |
482 | |
483 | static void qmp_marshal_output_BlockDeviceInfoList(BlockDeviceInfoList *ret_in, QObject **ret_out, Error **errp) |
484 | { |
485 | Error *err = NULL; |
486 | Visitor *v; |
487 | |
488 | v = qobject_output_visitor_new(ret_out); |
489 | visit_type_BlockDeviceInfoList(v, "unused" , &ret_in, &err); |
490 | if (!err) { |
491 | visit_complete(v, ret_out); |
492 | } |
493 | error_propagate(errp, err); |
494 | visit_free(v); |
495 | v = qapi_dealloc_visitor_new(); |
496 | visit_type_BlockDeviceInfoList(v, "unused" , &ret_in, NULL); |
497 | visit_free(v); |
498 | } |
499 | |
500 | void qmp_marshal_query_named_block_nodes(QDict *args, QObject **ret, Error **errp) |
501 | { |
502 | Error *err = NULL; |
503 | BlockDeviceInfoList *retval; |
504 | Visitor *v = NULL; |
505 | |
506 | if (args) { |
507 | v = qobject_input_visitor_new(QOBJECT(args)); |
508 | visit_start_struct(v, NULL, NULL, 0, &err); |
509 | if (err) { |
510 | goto out; |
511 | } |
512 | |
513 | if (!err) { |
514 | visit_check_struct(v, &err); |
515 | } |
516 | visit_end_struct(v, NULL); |
517 | if (err) { |
518 | goto out; |
519 | } |
520 | } |
521 | |
522 | retval = qmp_query_named_block_nodes(&err); |
523 | if (err) { |
524 | goto out; |
525 | } |
526 | |
527 | qmp_marshal_output_BlockDeviceInfoList(retval, ret, &err); |
528 | |
529 | out: |
530 | error_propagate(errp, err); |
531 | visit_free(v); |
532 | if (args) { |
533 | v = qapi_dealloc_visitor_new(); |
534 | visit_start_struct(v, NULL, NULL, 0, NULL); |
535 | |
536 | visit_end_struct(v, NULL); |
537 | visit_free(v); |
538 | } |
539 | } |
540 | |
541 | static void qmp_marshal_output_XDbgBlockGraph(XDbgBlockGraph *ret_in, QObject **ret_out, Error **errp) |
542 | { |
543 | Error *err = NULL; |
544 | Visitor *v; |
545 | |
546 | v = qobject_output_visitor_new(ret_out); |
547 | visit_type_XDbgBlockGraph(v, "unused" , &ret_in, &err); |
548 | if (!err) { |
549 | visit_complete(v, ret_out); |
550 | } |
551 | error_propagate(errp, err); |
552 | visit_free(v); |
553 | v = qapi_dealloc_visitor_new(); |
554 | visit_type_XDbgBlockGraph(v, "unused" , &ret_in, NULL); |
555 | visit_free(v); |
556 | } |
557 | |
558 | void qmp_marshal_x_debug_query_block_graph(QDict *args, QObject **ret, Error **errp) |
559 | { |
560 | Error *err = NULL; |
561 | XDbgBlockGraph *retval; |
562 | Visitor *v = NULL; |
563 | |
564 | if (args) { |
565 | v = qobject_input_visitor_new(QOBJECT(args)); |
566 | visit_start_struct(v, NULL, NULL, 0, &err); |
567 | if (err) { |
568 | goto out; |
569 | } |
570 | |
571 | if (!err) { |
572 | visit_check_struct(v, &err); |
573 | } |
574 | visit_end_struct(v, NULL); |
575 | if (err) { |
576 | goto out; |
577 | } |
578 | } |
579 | |
580 | retval = qmp_x_debug_query_block_graph(&err); |
581 | if (err) { |
582 | goto out; |
583 | } |
584 | |
585 | qmp_marshal_output_XDbgBlockGraph(retval, ret, &err); |
586 | |
587 | out: |
588 | error_propagate(errp, err); |
589 | visit_free(v); |
590 | if (args) { |
591 | v = qapi_dealloc_visitor_new(); |
592 | visit_start_struct(v, NULL, NULL, 0, NULL); |
593 | |
594 | visit_end_struct(v, NULL); |
595 | visit_free(v); |
596 | } |
597 | } |
598 | |
599 | void qmp_marshal_drive_mirror(QDict *args, QObject **ret, Error **errp) |
600 | { |
601 | Error *err = NULL; |
602 | Visitor *v; |
603 | DriveMirror arg = {0}; |
604 | |
605 | v = qobject_input_visitor_new(QOBJECT(args)); |
606 | visit_start_struct(v, NULL, NULL, 0, &err); |
607 | if (err) { |
608 | goto out; |
609 | } |
610 | visit_type_DriveMirror_members(v, &arg, &err); |
611 | if (!err) { |
612 | visit_check_struct(v, &err); |
613 | } |
614 | visit_end_struct(v, NULL); |
615 | if (err) { |
616 | goto out; |
617 | } |
618 | |
619 | qmp_drive_mirror(&arg, &err); |
620 | |
621 | out: |
622 | error_propagate(errp, err); |
623 | visit_free(v); |
624 | v = qapi_dealloc_visitor_new(); |
625 | visit_start_struct(v, NULL, NULL, 0, NULL); |
626 | visit_type_DriveMirror_members(v, &arg, NULL); |
627 | visit_end_struct(v, NULL); |
628 | visit_free(v); |
629 | } |
630 | |
631 | void qmp_marshal_block_dirty_bitmap_add(QDict *args, QObject **ret, Error **errp) |
632 | { |
633 | Error *err = NULL; |
634 | Visitor *v; |
635 | BlockDirtyBitmapAdd arg = {0}; |
636 | |
637 | v = qobject_input_visitor_new(QOBJECT(args)); |
638 | visit_start_struct(v, NULL, NULL, 0, &err); |
639 | if (err) { |
640 | goto out; |
641 | } |
642 | visit_type_BlockDirtyBitmapAdd_members(v, &arg, &err); |
643 | if (!err) { |
644 | visit_check_struct(v, &err); |
645 | } |
646 | visit_end_struct(v, NULL); |
647 | if (err) { |
648 | goto out; |
649 | } |
650 | |
651 | qmp_block_dirty_bitmap_add(arg.node, arg.name, arg.has_granularity, arg.granularity, arg.has_persistent, arg.persistent, arg.has_autoload, arg.autoload, arg.has_disabled, arg.disabled, &err); |
652 | |
653 | out: |
654 | error_propagate(errp, err); |
655 | visit_free(v); |
656 | v = qapi_dealloc_visitor_new(); |
657 | visit_start_struct(v, NULL, NULL, 0, NULL); |
658 | visit_type_BlockDirtyBitmapAdd_members(v, &arg, NULL); |
659 | visit_end_struct(v, NULL); |
660 | visit_free(v); |
661 | } |
662 | |
663 | void qmp_marshal_block_dirty_bitmap_remove(QDict *args, QObject **ret, Error **errp) |
664 | { |
665 | Error *err = NULL; |
666 | Visitor *v; |
667 | BlockDirtyBitmap arg = {0}; |
668 | |
669 | v = qobject_input_visitor_new(QOBJECT(args)); |
670 | visit_start_struct(v, NULL, NULL, 0, &err); |
671 | if (err) { |
672 | goto out; |
673 | } |
674 | visit_type_BlockDirtyBitmap_members(v, &arg, &err); |
675 | if (!err) { |
676 | visit_check_struct(v, &err); |
677 | } |
678 | visit_end_struct(v, NULL); |
679 | if (err) { |
680 | goto out; |
681 | } |
682 | |
683 | qmp_block_dirty_bitmap_remove(arg.node, arg.name, &err); |
684 | |
685 | out: |
686 | error_propagate(errp, err); |
687 | visit_free(v); |
688 | v = qapi_dealloc_visitor_new(); |
689 | visit_start_struct(v, NULL, NULL, 0, NULL); |
690 | visit_type_BlockDirtyBitmap_members(v, &arg, NULL); |
691 | visit_end_struct(v, NULL); |
692 | visit_free(v); |
693 | } |
694 | |
695 | void qmp_marshal_block_dirty_bitmap_clear(QDict *args, QObject **ret, Error **errp) |
696 | { |
697 | Error *err = NULL; |
698 | Visitor *v; |
699 | BlockDirtyBitmap arg = {0}; |
700 | |
701 | v = qobject_input_visitor_new(QOBJECT(args)); |
702 | visit_start_struct(v, NULL, NULL, 0, &err); |
703 | if (err) { |
704 | goto out; |
705 | } |
706 | visit_type_BlockDirtyBitmap_members(v, &arg, &err); |
707 | if (!err) { |
708 | visit_check_struct(v, &err); |
709 | } |
710 | visit_end_struct(v, NULL); |
711 | if (err) { |
712 | goto out; |
713 | } |
714 | |
715 | qmp_block_dirty_bitmap_clear(arg.node, arg.name, &err); |
716 | |
717 | out: |
718 | error_propagate(errp, err); |
719 | visit_free(v); |
720 | v = qapi_dealloc_visitor_new(); |
721 | visit_start_struct(v, NULL, NULL, 0, NULL); |
722 | visit_type_BlockDirtyBitmap_members(v, &arg, NULL); |
723 | visit_end_struct(v, NULL); |
724 | visit_free(v); |
725 | } |
726 | |
727 | void qmp_marshal_block_dirty_bitmap_enable(QDict *args, QObject **ret, Error **errp) |
728 | { |
729 | Error *err = NULL; |
730 | Visitor *v; |
731 | BlockDirtyBitmap arg = {0}; |
732 | |
733 | v = qobject_input_visitor_new(QOBJECT(args)); |
734 | visit_start_struct(v, NULL, NULL, 0, &err); |
735 | if (err) { |
736 | goto out; |
737 | } |
738 | visit_type_BlockDirtyBitmap_members(v, &arg, &err); |
739 | if (!err) { |
740 | visit_check_struct(v, &err); |
741 | } |
742 | visit_end_struct(v, NULL); |
743 | if (err) { |
744 | goto out; |
745 | } |
746 | |
747 | qmp_block_dirty_bitmap_enable(arg.node, arg.name, &err); |
748 | |
749 | out: |
750 | error_propagate(errp, err); |
751 | visit_free(v); |
752 | v = qapi_dealloc_visitor_new(); |
753 | visit_start_struct(v, NULL, NULL, 0, NULL); |
754 | visit_type_BlockDirtyBitmap_members(v, &arg, NULL); |
755 | visit_end_struct(v, NULL); |
756 | visit_free(v); |
757 | } |
758 | |
759 | void qmp_marshal_block_dirty_bitmap_disable(QDict *args, QObject **ret, Error **errp) |
760 | { |
761 | Error *err = NULL; |
762 | Visitor *v; |
763 | BlockDirtyBitmap arg = {0}; |
764 | |
765 | v = qobject_input_visitor_new(QOBJECT(args)); |
766 | visit_start_struct(v, NULL, NULL, 0, &err); |
767 | if (err) { |
768 | goto out; |
769 | } |
770 | visit_type_BlockDirtyBitmap_members(v, &arg, &err); |
771 | if (!err) { |
772 | visit_check_struct(v, &err); |
773 | } |
774 | visit_end_struct(v, NULL); |
775 | if (err) { |
776 | goto out; |
777 | } |
778 | |
779 | qmp_block_dirty_bitmap_disable(arg.node, arg.name, &err); |
780 | |
781 | out: |
782 | error_propagate(errp, err); |
783 | visit_free(v); |
784 | v = qapi_dealloc_visitor_new(); |
785 | visit_start_struct(v, NULL, NULL, 0, NULL); |
786 | visit_type_BlockDirtyBitmap_members(v, &arg, NULL); |
787 | visit_end_struct(v, NULL); |
788 | visit_free(v); |
789 | } |
790 | |
791 | void qmp_marshal_block_dirty_bitmap_merge(QDict *args, QObject **ret, Error **errp) |
792 | { |
793 | Error *err = NULL; |
794 | Visitor *v; |
795 | BlockDirtyBitmapMerge arg = {0}; |
796 | |
797 | v = qobject_input_visitor_new(QOBJECT(args)); |
798 | visit_start_struct(v, NULL, NULL, 0, &err); |
799 | if (err) { |
800 | goto out; |
801 | } |
802 | visit_type_BlockDirtyBitmapMerge_members(v, &arg, &err); |
803 | if (!err) { |
804 | visit_check_struct(v, &err); |
805 | } |
806 | visit_end_struct(v, NULL); |
807 | if (err) { |
808 | goto out; |
809 | } |
810 | |
811 | qmp_block_dirty_bitmap_merge(arg.node, arg.target, arg.bitmaps, &err); |
812 | |
813 | out: |
814 | error_propagate(errp, err); |
815 | visit_free(v); |
816 | v = qapi_dealloc_visitor_new(); |
817 | visit_start_struct(v, NULL, NULL, 0, NULL); |
818 | visit_type_BlockDirtyBitmapMerge_members(v, &arg, NULL); |
819 | visit_end_struct(v, NULL); |
820 | visit_free(v); |
821 | } |
822 | |
823 | static void qmp_marshal_output_BlockDirtyBitmapSha256(BlockDirtyBitmapSha256 *ret_in, QObject **ret_out, Error **errp) |
824 | { |
825 | Error *err = NULL; |
826 | Visitor *v; |
827 | |
828 | v = qobject_output_visitor_new(ret_out); |
829 | visit_type_BlockDirtyBitmapSha256(v, "unused" , &ret_in, &err); |
830 | if (!err) { |
831 | visit_complete(v, ret_out); |
832 | } |
833 | error_propagate(errp, err); |
834 | visit_free(v); |
835 | v = qapi_dealloc_visitor_new(); |
836 | visit_type_BlockDirtyBitmapSha256(v, "unused" , &ret_in, NULL); |
837 | visit_free(v); |
838 | } |
839 | |
840 | void qmp_marshal_x_debug_block_dirty_bitmap_sha256(QDict *args, QObject **ret, Error **errp) |
841 | { |
842 | Error *err = NULL; |
843 | BlockDirtyBitmapSha256 *retval; |
844 | Visitor *v; |
845 | BlockDirtyBitmap arg = {0}; |
846 | |
847 | v = qobject_input_visitor_new(QOBJECT(args)); |
848 | visit_start_struct(v, NULL, NULL, 0, &err); |
849 | if (err) { |
850 | goto out; |
851 | } |
852 | visit_type_BlockDirtyBitmap_members(v, &arg, &err); |
853 | if (!err) { |
854 | visit_check_struct(v, &err); |
855 | } |
856 | visit_end_struct(v, NULL); |
857 | if (err) { |
858 | goto out; |
859 | } |
860 | |
861 | retval = qmp_x_debug_block_dirty_bitmap_sha256(arg.node, arg.name, &err); |
862 | if (err) { |
863 | goto out; |
864 | } |
865 | |
866 | qmp_marshal_output_BlockDirtyBitmapSha256(retval, ret, &err); |
867 | |
868 | out: |
869 | error_propagate(errp, err); |
870 | visit_free(v); |
871 | v = qapi_dealloc_visitor_new(); |
872 | visit_start_struct(v, NULL, NULL, 0, NULL); |
873 | visit_type_BlockDirtyBitmap_members(v, &arg, NULL); |
874 | visit_end_struct(v, NULL); |
875 | visit_free(v); |
876 | } |
877 | |
878 | void qmp_marshal_blockdev_mirror(QDict *args, QObject **ret, Error **errp) |
879 | { |
880 | Error *err = NULL; |
881 | Visitor *v; |
882 | q_obj_blockdev_mirror_arg arg = {0}; |
883 | |
884 | v = qobject_input_visitor_new(QOBJECT(args)); |
885 | visit_start_struct(v, NULL, NULL, 0, &err); |
886 | if (err) { |
887 | goto out; |
888 | } |
889 | visit_type_q_obj_blockdev_mirror_arg_members(v, &arg, &err); |
890 | if (!err) { |
891 | visit_check_struct(v, &err); |
892 | } |
893 | visit_end_struct(v, NULL); |
894 | if (err) { |
895 | goto out; |
896 | } |
897 | |
898 | qmp_blockdev_mirror(arg.has_job_id, arg.job_id, arg.device, arg.target, arg.has_replaces, arg.replaces, arg.sync, arg.has_speed, arg.speed, arg.has_granularity, arg.granularity, arg.has_buf_size, arg.buf_size, arg.has_on_source_error, arg.on_source_error, arg.has_on_target_error, arg.on_target_error, arg.has_filter_node_name, arg.filter_node_name, arg.has_copy_mode, arg.copy_mode, arg.has_auto_finalize, arg.auto_finalize, arg.has_auto_dismiss, arg.auto_dismiss, &err); |
899 | |
900 | out: |
901 | error_propagate(errp, err); |
902 | visit_free(v); |
903 | v = qapi_dealloc_visitor_new(); |
904 | visit_start_struct(v, NULL, NULL, 0, NULL); |
905 | visit_type_q_obj_blockdev_mirror_arg_members(v, &arg, NULL); |
906 | visit_end_struct(v, NULL); |
907 | visit_free(v); |
908 | } |
909 | |
910 | void qmp_marshal_block_set_io_throttle(QDict *args, QObject **ret, Error **errp) |
911 | { |
912 | Error *err = NULL; |
913 | Visitor *v; |
914 | BlockIOThrottle arg = {0}; |
915 | |
916 | v = qobject_input_visitor_new(QOBJECT(args)); |
917 | visit_start_struct(v, NULL, NULL, 0, &err); |
918 | if (err) { |
919 | goto out; |
920 | } |
921 | visit_type_BlockIOThrottle_members(v, &arg, &err); |
922 | if (!err) { |
923 | visit_check_struct(v, &err); |
924 | } |
925 | visit_end_struct(v, NULL); |
926 | if (err) { |
927 | goto out; |
928 | } |
929 | |
930 | qmp_block_set_io_throttle(&arg, &err); |
931 | |
932 | out: |
933 | error_propagate(errp, err); |
934 | visit_free(v); |
935 | v = qapi_dealloc_visitor_new(); |
936 | visit_start_struct(v, NULL, NULL, 0, NULL); |
937 | visit_type_BlockIOThrottle_members(v, &arg, NULL); |
938 | visit_end_struct(v, NULL); |
939 | visit_free(v); |
940 | } |
941 | |
942 | void qmp_marshal_block_stream(QDict *args, QObject **ret, Error **errp) |
943 | { |
944 | Error *err = NULL; |
945 | Visitor *v; |
946 | q_obj_block_stream_arg arg = {0}; |
947 | |
948 | v = qobject_input_visitor_new(QOBJECT(args)); |
949 | visit_start_struct(v, NULL, NULL, 0, &err); |
950 | if (err) { |
951 | goto out; |
952 | } |
953 | visit_type_q_obj_block_stream_arg_members(v, &arg, &err); |
954 | if (!err) { |
955 | visit_check_struct(v, &err); |
956 | } |
957 | visit_end_struct(v, NULL); |
958 | if (err) { |
959 | goto out; |
960 | } |
961 | |
962 | qmp_block_stream(arg.has_job_id, arg.job_id, arg.device, arg.has_base, arg.base, arg.has_base_node, arg.base_node, arg.has_backing_file, arg.backing_file, arg.has_speed, arg.speed, arg.has_on_error, arg.on_error, arg.has_auto_finalize, arg.auto_finalize, arg.has_auto_dismiss, arg.auto_dismiss, &err); |
963 | |
964 | out: |
965 | error_propagate(errp, err); |
966 | visit_free(v); |
967 | v = qapi_dealloc_visitor_new(); |
968 | visit_start_struct(v, NULL, NULL, 0, NULL); |
969 | visit_type_q_obj_block_stream_arg_members(v, &arg, NULL); |
970 | visit_end_struct(v, NULL); |
971 | visit_free(v); |
972 | } |
973 | |
974 | void qmp_marshal_block_job_set_speed(QDict *args, QObject **ret, Error **errp) |
975 | { |
976 | Error *err = NULL; |
977 | Visitor *v; |
978 | q_obj_block_job_set_speed_arg arg = {0}; |
979 | |
980 | v = qobject_input_visitor_new(QOBJECT(args)); |
981 | visit_start_struct(v, NULL, NULL, 0, &err); |
982 | if (err) { |
983 | goto out; |
984 | } |
985 | visit_type_q_obj_block_job_set_speed_arg_members(v, &arg, &err); |
986 | if (!err) { |
987 | visit_check_struct(v, &err); |
988 | } |
989 | visit_end_struct(v, NULL); |
990 | if (err) { |
991 | goto out; |
992 | } |
993 | |
994 | qmp_block_job_set_speed(arg.device, arg.speed, &err); |
995 | |
996 | out: |
997 | error_propagate(errp, err); |
998 | visit_free(v); |
999 | v = qapi_dealloc_visitor_new(); |
1000 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1001 | visit_type_q_obj_block_job_set_speed_arg_members(v, &arg, NULL); |
1002 | visit_end_struct(v, NULL); |
1003 | visit_free(v); |
1004 | } |
1005 | |
1006 | void qmp_marshal_block_job_cancel(QDict *args, QObject **ret, Error **errp) |
1007 | { |
1008 | Error *err = NULL; |
1009 | Visitor *v; |
1010 | q_obj_block_job_cancel_arg arg = {0}; |
1011 | |
1012 | v = qobject_input_visitor_new(QOBJECT(args)); |
1013 | visit_start_struct(v, NULL, NULL, 0, &err); |
1014 | if (err) { |
1015 | goto out; |
1016 | } |
1017 | visit_type_q_obj_block_job_cancel_arg_members(v, &arg, &err); |
1018 | if (!err) { |
1019 | visit_check_struct(v, &err); |
1020 | } |
1021 | visit_end_struct(v, NULL); |
1022 | if (err) { |
1023 | goto out; |
1024 | } |
1025 | |
1026 | qmp_block_job_cancel(arg.device, arg.has_force, arg.force, &err); |
1027 | |
1028 | out: |
1029 | error_propagate(errp, err); |
1030 | visit_free(v); |
1031 | v = qapi_dealloc_visitor_new(); |
1032 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1033 | visit_type_q_obj_block_job_cancel_arg_members(v, &arg, NULL); |
1034 | visit_end_struct(v, NULL); |
1035 | visit_free(v); |
1036 | } |
1037 | |
1038 | void qmp_marshal_block_job_pause(QDict *args, QObject **ret, Error **errp) |
1039 | { |
1040 | Error *err = NULL; |
1041 | Visitor *v; |
1042 | q_obj_block_job_pause_arg arg = {0}; |
1043 | |
1044 | v = qobject_input_visitor_new(QOBJECT(args)); |
1045 | visit_start_struct(v, NULL, NULL, 0, &err); |
1046 | if (err) { |
1047 | goto out; |
1048 | } |
1049 | visit_type_q_obj_block_job_pause_arg_members(v, &arg, &err); |
1050 | if (!err) { |
1051 | visit_check_struct(v, &err); |
1052 | } |
1053 | visit_end_struct(v, NULL); |
1054 | if (err) { |
1055 | goto out; |
1056 | } |
1057 | |
1058 | qmp_block_job_pause(arg.device, &err); |
1059 | |
1060 | out: |
1061 | error_propagate(errp, err); |
1062 | visit_free(v); |
1063 | v = qapi_dealloc_visitor_new(); |
1064 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1065 | visit_type_q_obj_block_job_pause_arg_members(v, &arg, NULL); |
1066 | visit_end_struct(v, NULL); |
1067 | visit_free(v); |
1068 | } |
1069 | |
1070 | void qmp_marshal_block_job_resume(QDict *args, QObject **ret, Error **errp) |
1071 | { |
1072 | Error *err = NULL; |
1073 | Visitor *v; |
1074 | q_obj_block_job_resume_arg arg = {0}; |
1075 | |
1076 | v = qobject_input_visitor_new(QOBJECT(args)); |
1077 | visit_start_struct(v, NULL, NULL, 0, &err); |
1078 | if (err) { |
1079 | goto out; |
1080 | } |
1081 | visit_type_q_obj_block_job_resume_arg_members(v, &arg, &err); |
1082 | if (!err) { |
1083 | visit_check_struct(v, &err); |
1084 | } |
1085 | visit_end_struct(v, NULL); |
1086 | if (err) { |
1087 | goto out; |
1088 | } |
1089 | |
1090 | qmp_block_job_resume(arg.device, &err); |
1091 | |
1092 | out: |
1093 | error_propagate(errp, err); |
1094 | visit_free(v); |
1095 | v = qapi_dealloc_visitor_new(); |
1096 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1097 | visit_type_q_obj_block_job_resume_arg_members(v, &arg, NULL); |
1098 | visit_end_struct(v, NULL); |
1099 | visit_free(v); |
1100 | } |
1101 | |
1102 | void qmp_marshal_block_job_complete(QDict *args, QObject **ret, Error **errp) |
1103 | { |
1104 | Error *err = NULL; |
1105 | Visitor *v; |
1106 | q_obj_block_job_complete_arg arg = {0}; |
1107 | |
1108 | v = qobject_input_visitor_new(QOBJECT(args)); |
1109 | visit_start_struct(v, NULL, NULL, 0, &err); |
1110 | if (err) { |
1111 | goto out; |
1112 | } |
1113 | visit_type_q_obj_block_job_complete_arg_members(v, &arg, &err); |
1114 | if (!err) { |
1115 | visit_check_struct(v, &err); |
1116 | } |
1117 | visit_end_struct(v, NULL); |
1118 | if (err) { |
1119 | goto out; |
1120 | } |
1121 | |
1122 | qmp_block_job_complete(arg.device, &err); |
1123 | |
1124 | out: |
1125 | error_propagate(errp, err); |
1126 | visit_free(v); |
1127 | v = qapi_dealloc_visitor_new(); |
1128 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1129 | visit_type_q_obj_block_job_complete_arg_members(v, &arg, NULL); |
1130 | visit_end_struct(v, NULL); |
1131 | visit_free(v); |
1132 | } |
1133 | |
1134 | void qmp_marshal_block_job_dismiss(QDict *args, QObject **ret, Error **errp) |
1135 | { |
1136 | Error *err = NULL; |
1137 | Visitor *v; |
1138 | q_obj_block_job_dismiss_arg arg = {0}; |
1139 | |
1140 | v = qobject_input_visitor_new(QOBJECT(args)); |
1141 | visit_start_struct(v, NULL, NULL, 0, &err); |
1142 | if (err) { |
1143 | goto out; |
1144 | } |
1145 | visit_type_q_obj_block_job_dismiss_arg_members(v, &arg, &err); |
1146 | if (!err) { |
1147 | visit_check_struct(v, &err); |
1148 | } |
1149 | visit_end_struct(v, NULL); |
1150 | if (err) { |
1151 | goto out; |
1152 | } |
1153 | |
1154 | qmp_block_job_dismiss(arg.id, &err); |
1155 | |
1156 | out: |
1157 | error_propagate(errp, err); |
1158 | visit_free(v); |
1159 | v = qapi_dealloc_visitor_new(); |
1160 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1161 | visit_type_q_obj_block_job_dismiss_arg_members(v, &arg, NULL); |
1162 | visit_end_struct(v, NULL); |
1163 | visit_free(v); |
1164 | } |
1165 | |
1166 | void qmp_marshal_block_job_finalize(QDict *args, QObject **ret, Error **errp) |
1167 | { |
1168 | Error *err = NULL; |
1169 | Visitor *v; |
1170 | q_obj_block_job_finalize_arg arg = {0}; |
1171 | |
1172 | v = qobject_input_visitor_new(QOBJECT(args)); |
1173 | visit_start_struct(v, NULL, NULL, 0, &err); |
1174 | if (err) { |
1175 | goto out; |
1176 | } |
1177 | visit_type_q_obj_block_job_finalize_arg_members(v, &arg, &err); |
1178 | if (!err) { |
1179 | visit_check_struct(v, &err); |
1180 | } |
1181 | visit_end_struct(v, NULL); |
1182 | if (err) { |
1183 | goto out; |
1184 | } |
1185 | |
1186 | qmp_block_job_finalize(arg.id, &err); |
1187 | |
1188 | out: |
1189 | error_propagate(errp, err); |
1190 | visit_free(v); |
1191 | v = qapi_dealloc_visitor_new(); |
1192 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1193 | visit_type_q_obj_block_job_finalize_arg_members(v, &arg, NULL); |
1194 | visit_end_struct(v, NULL); |
1195 | visit_free(v); |
1196 | } |
1197 | |
1198 | void qmp_marshal_blockdev_add(QDict *args, QObject **ret, Error **errp) |
1199 | { |
1200 | Error *err = NULL; |
1201 | Visitor *v; |
1202 | BlockdevOptions arg = {0}; |
1203 | |
1204 | v = qobject_input_visitor_new(QOBJECT(args)); |
1205 | visit_start_struct(v, NULL, NULL, 0, &err); |
1206 | if (err) { |
1207 | goto out; |
1208 | } |
1209 | visit_type_BlockdevOptions_members(v, &arg, &err); |
1210 | if (!err) { |
1211 | visit_check_struct(v, &err); |
1212 | } |
1213 | visit_end_struct(v, NULL); |
1214 | if (err) { |
1215 | goto out; |
1216 | } |
1217 | |
1218 | qmp_blockdev_add(&arg, &err); |
1219 | |
1220 | out: |
1221 | error_propagate(errp, err); |
1222 | visit_free(v); |
1223 | v = qapi_dealloc_visitor_new(); |
1224 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1225 | visit_type_BlockdevOptions_members(v, &arg, NULL); |
1226 | visit_end_struct(v, NULL); |
1227 | visit_free(v); |
1228 | } |
1229 | |
1230 | void qmp_marshal_x_blockdev_reopen(QDict *args, QObject **ret, Error **errp) |
1231 | { |
1232 | Error *err = NULL; |
1233 | Visitor *v; |
1234 | BlockdevOptions arg = {0}; |
1235 | |
1236 | v = qobject_input_visitor_new(QOBJECT(args)); |
1237 | visit_start_struct(v, NULL, NULL, 0, &err); |
1238 | if (err) { |
1239 | goto out; |
1240 | } |
1241 | visit_type_BlockdevOptions_members(v, &arg, &err); |
1242 | if (!err) { |
1243 | visit_check_struct(v, &err); |
1244 | } |
1245 | visit_end_struct(v, NULL); |
1246 | if (err) { |
1247 | goto out; |
1248 | } |
1249 | |
1250 | qmp_x_blockdev_reopen(&arg, &err); |
1251 | |
1252 | out: |
1253 | error_propagate(errp, err); |
1254 | visit_free(v); |
1255 | v = qapi_dealloc_visitor_new(); |
1256 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1257 | visit_type_BlockdevOptions_members(v, &arg, NULL); |
1258 | visit_end_struct(v, NULL); |
1259 | visit_free(v); |
1260 | } |
1261 | |
1262 | void qmp_marshal_blockdev_del(QDict *args, QObject **ret, Error **errp) |
1263 | { |
1264 | Error *err = NULL; |
1265 | Visitor *v; |
1266 | q_obj_blockdev_del_arg arg = {0}; |
1267 | |
1268 | v = qobject_input_visitor_new(QOBJECT(args)); |
1269 | visit_start_struct(v, NULL, NULL, 0, &err); |
1270 | if (err) { |
1271 | goto out; |
1272 | } |
1273 | visit_type_q_obj_blockdev_del_arg_members(v, &arg, &err); |
1274 | if (!err) { |
1275 | visit_check_struct(v, &err); |
1276 | } |
1277 | visit_end_struct(v, NULL); |
1278 | if (err) { |
1279 | goto out; |
1280 | } |
1281 | |
1282 | qmp_blockdev_del(arg.node_name, &err); |
1283 | |
1284 | out: |
1285 | error_propagate(errp, err); |
1286 | visit_free(v); |
1287 | v = qapi_dealloc_visitor_new(); |
1288 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1289 | visit_type_q_obj_blockdev_del_arg_members(v, &arg, NULL); |
1290 | visit_end_struct(v, NULL); |
1291 | visit_free(v); |
1292 | } |
1293 | |
1294 | void qmp_marshal_blockdev_create(QDict *args, QObject **ret, Error **errp) |
1295 | { |
1296 | Error *err = NULL; |
1297 | Visitor *v; |
1298 | q_obj_blockdev_create_arg arg = {0}; |
1299 | |
1300 | v = qobject_input_visitor_new(QOBJECT(args)); |
1301 | visit_start_struct(v, NULL, NULL, 0, &err); |
1302 | if (err) { |
1303 | goto out; |
1304 | } |
1305 | visit_type_q_obj_blockdev_create_arg_members(v, &arg, &err); |
1306 | if (!err) { |
1307 | visit_check_struct(v, &err); |
1308 | } |
1309 | visit_end_struct(v, NULL); |
1310 | if (err) { |
1311 | goto out; |
1312 | } |
1313 | |
1314 | qmp_blockdev_create(arg.job_id, arg.options, &err); |
1315 | |
1316 | out: |
1317 | error_propagate(errp, err); |
1318 | visit_free(v); |
1319 | v = qapi_dealloc_visitor_new(); |
1320 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1321 | visit_type_q_obj_blockdev_create_arg_members(v, &arg, NULL); |
1322 | visit_end_struct(v, NULL); |
1323 | visit_free(v); |
1324 | } |
1325 | |
1326 | void qmp_marshal_blockdev_open_tray(QDict *args, QObject **ret, Error **errp) |
1327 | { |
1328 | Error *err = NULL; |
1329 | Visitor *v; |
1330 | q_obj_blockdev_open_tray_arg arg = {0}; |
1331 | |
1332 | v = qobject_input_visitor_new(QOBJECT(args)); |
1333 | visit_start_struct(v, NULL, NULL, 0, &err); |
1334 | if (err) { |
1335 | goto out; |
1336 | } |
1337 | visit_type_q_obj_blockdev_open_tray_arg_members(v, &arg, &err); |
1338 | if (!err) { |
1339 | visit_check_struct(v, &err); |
1340 | } |
1341 | visit_end_struct(v, NULL); |
1342 | if (err) { |
1343 | goto out; |
1344 | } |
1345 | |
1346 | qmp_blockdev_open_tray(arg.has_device, arg.device, arg.has_id, arg.id, arg.has_force, arg.force, &err); |
1347 | |
1348 | out: |
1349 | error_propagate(errp, err); |
1350 | visit_free(v); |
1351 | v = qapi_dealloc_visitor_new(); |
1352 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1353 | visit_type_q_obj_blockdev_open_tray_arg_members(v, &arg, NULL); |
1354 | visit_end_struct(v, NULL); |
1355 | visit_free(v); |
1356 | } |
1357 | |
1358 | void qmp_marshal_blockdev_close_tray(QDict *args, QObject **ret, Error **errp) |
1359 | { |
1360 | Error *err = NULL; |
1361 | Visitor *v; |
1362 | q_obj_blockdev_close_tray_arg arg = {0}; |
1363 | |
1364 | v = qobject_input_visitor_new(QOBJECT(args)); |
1365 | visit_start_struct(v, NULL, NULL, 0, &err); |
1366 | if (err) { |
1367 | goto out; |
1368 | } |
1369 | visit_type_q_obj_blockdev_close_tray_arg_members(v, &arg, &err); |
1370 | if (!err) { |
1371 | visit_check_struct(v, &err); |
1372 | } |
1373 | visit_end_struct(v, NULL); |
1374 | if (err) { |
1375 | goto out; |
1376 | } |
1377 | |
1378 | qmp_blockdev_close_tray(arg.has_device, arg.device, arg.has_id, arg.id, &err); |
1379 | |
1380 | out: |
1381 | error_propagate(errp, err); |
1382 | visit_free(v); |
1383 | v = qapi_dealloc_visitor_new(); |
1384 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1385 | visit_type_q_obj_blockdev_close_tray_arg_members(v, &arg, NULL); |
1386 | visit_end_struct(v, NULL); |
1387 | visit_free(v); |
1388 | } |
1389 | |
1390 | void qmp_marshal_blockdev_remove_medium(QDict *args, QObject **ret, Error **errp) |
1391 | { |
1392 | Error *err = NULL; |
1393 | Visitor *v; |
1394 | q_obj_blockdev_remove_medium_arg arg = {0}; |
1395 | |
1396 | v = qobject_input_visitor_new(QOBJECT(args)); |
1397 | visit_start_struct(v, NULL, NULL, 0, &err); |
1398 | if (err) { |
1399 | goto out; |
1400 | } |
1401 | visit_type_q_obj_blockdev_remove_medium_arg_members(v, &arg, &err); |
1402 | if (!err) { |
1403 | visit_check_struct(v, &err); |
1404 | } |
1405 | visit_end_struct(v, NULL); |
1406 | if (err) { |
1407 | goto out; |
1408 | } |
1409 | |
1410 | qmp_blockdev_remove_medium(arg.id, &err); |
1411 | |
1412 | out: |
1413 | error_propagate(errp, err); |
1414 | visit_free(v); |
1415 | v = qapi_dealloc_visitor_new(); |
1416 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1417 | visit_type_q_obj_blockdev_remove_medium_arg_members(v, &arg, NULL); |
1418 | visit_end_struct(v, NULL); |
1419 | visit_free(v); |
1420 | } |
1421 | |
1422 | void qmp_marshal_blockdev_insert_medium(QDict *args, QObject **ret, Error **errp) |
1423 | { |
1424 | Error *err = NULL; |
1425 | Visitor *v; |
1426 | q_obj_blockdev_insert_medium_arg arg = {0}; |
1427 | |
1428 | v = qobject_input_visitor_new(QOBJECT(args)); |
1429 | visit_start_struct(v, NULL, NULL, 0, &err); |
1430 | if (err) { |
1431 | goto out; |
1432 | } |
1433 | visit_type_q_obj_blockdev_insert_medium_arg_members(v, &arg, &err); |
1434 | if (!err) { |
1435 | visit_check_struct(v, &err); |
1436 | } |
1437 | visit_end_struct(v, NULL); |
1438 | if (err) { |
1439 | goto out; |
1440 | } |
1441 | |
1442 | qmp_blockdev_insert_medium(arg.id, arg.node_name, &err); |
1443 | |
1444 | out: |
1445 | error_propagate(errp, err); |
1446 | visit_free(v); |
1447 | v = qapi_dealloc_visitor_new(); |
1448 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1449 | visit_type_q_obj_blockdev_insert_medium_arg_members(v, &arg, NULL); |
1450 | visit_end_struct(v, NULL); |
1451 | visit_free(v); |
1452 | } |
1453 | |
1454 | void qmp_marshal_blockdev_change_medium(QDict *args, QObject **ret, Error **errp) |
1455 | { |
1456 | Error *err = NULL; |
1457 | Visitor *v; |
1458 | q_obj_blockdev_change_medium_arg arg = {0}; |
1459 | |
1460 | v = qobject_input_visitor_new(QOBJECT(args)); |
1461 | visit_start_struct(v, NULL, NULL, 0, &err); |
1462 | if (err) { |
1463 | goto out; |
1464 | } |
1465 | visit_type_q_obj_blockdev_change_medium_arg_members(v, &arg, &err); |
1466 | if (!err) { |
1467 | visit_check_struct(v, &err); |
1468 | } |
1469 | visit_end_struct(v, NULL); |
1470 | if (err) { |
1471 | goto out; |
1472 | } |
1473 | |
1474 | qmp_blockdev_change_medium(arg.has_device, arg.device, arg.has_id, arg.id, arg.filename, arg.has_format, arg.format, arg.has_read_only_mode, arg.read_only_mode, &err); |
1475 | |
1476 | out: |
1477 | error_propagate(errp, err); |
1478 | visit_free(v); |
1479 | v = qapi_dealloc_visitor_new(); |
1480 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1481 | visit_type_q_obj_blockdev_change_medium_arg_members(v, &arg, NULL); |
1482 | visit_end_struct(v, NULL); |
1483 | visit_free(v); |
1484 | } |
1485 | |
1486 | void qmp_marshal_block_set_write_threshold(QDict *args, QObject **ret, Error **errp) |
1487 | { |
1488 | Error *err = NULL; |
1489 | Visitor *v; |
1490 | q_obj_block_set_write_threshold_arg arg = {0}; |
1491 | |
1492 | v = qobject_input_visitor_new(QOBJECT(args)); |
1493 | visit_start_struct(v, NULL, NULL, 0, &err); |
1494 | if (err) { |
1495 | goto out; |
1496 | } |
1497 | visit_type_q_obj_block_set_write_threshold_arg_members(v, &arg, &err); |
1498 | if (!err) { |
1499 | visit_check_struct(v, &err); |
1500 | } |
1501 | visit_end_struct(v, NULL); |
1502 | if (err) { |
1503 | goto out; |
1504 | } |
1505 | |
1506 | qmp_block_set_write_threshold(arg.node_name, arg.write_threshold, &err); |
1507 | |
1508 | out: |
1509 | error_propagate(errp, err); |
1510 | visit_free(v); |
1511 | v = qapi_dealloc_visitor_new(); |
1512 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1513 | visit_type_q_obj_block_set_write_threshold_arg_members(v, &arg, NULL); |
1514 | visit_end_struct(v, NULL); |
1515 | visit_free(v); |
1516 | } |
1517 | |
1518 | void qmp_marshal_x_blockdev_change(QDict *args, QObject **ret, Error **errp) |
1519 | { |
1520 | Error *err = NULL; |
1521 | Visitor *v; |
1522 | q_obj_x_blockdev_change_arg arg = {0}; |
1523 | |
1524 | v = qobject_input_visitor_new(QOBJECT(args)); |
1525 | visit_start_struct(v, NULL, NULL, 0, &err); |
1526 | if (err) { |
1527 | goto out; |
1528 | } |
1529 | visit_type_q_obj_x_blockdev_change_arg_members(v, &arg, &err); |
1530 | if (!err) { |
1531 | visit_check_struct(v, &err); |
1532 | } |
1533 | visit_end_struct(v, NULL); |
1534 | if (err) { |
1535 | goto out; |
1536 | } |
1537 | |
1538 | qmp_x_blockdev_change(arg.parent, arg.has_child, arg.child, arg.has_node, arg.node, &err); |
1539 | |
1540 | out: |
1541 | error_propagate(errp, err); |
1542 | visit_free(v); |
1543 | v = qapi_dealloc_visitor_new(); |
1544 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1545 | visit_type_q_obj_x_blockdev_change_arg_members(v, &arg, NULL); |
1546 | visit_end_struct(v, NULL); |
1547 | visit_free(v); |
1548 | } |
1549 | |
1550 | void qmp_marshal_x_blockdev_set_iothread(QDict *args, QObject **ret, Error **errp) |
1551 | { |
1552 | Error *err = NULL; |
1553 | Visitor *v; |
1554 | q_obj_x_blockdev_set_iothread_arg arg = {0}; |
1555 | |
1556 | v = qobject_input_visitor_new(QOBJECT(args)); |
1557 | visit_start_struct(v, NULL, NULL, 0, &err); |
1558 | if (err) { |
1559 | goto out; |
1560 | } |
1561 | visit_type_q_obj_x_blockdev_set_iothread_arg_members(v, &arg, &err); |
1562 | if (!err) { |
1563 | visit_check_struct(v, &err); |
1564 | } |
1565 | visit_end_struct(v, NULL); |
1566 | if (err) { |
1567 | goto out; |
1568 | } |
1569 | |
1570 | qmp_x_blockdev_set_iothread(arg.node_name, arg.iothread, arg.has_force, arg.force, &err); |
1571 | |
1572 | out: |
1573 | error_propagate(errp, err); |
1574 | visit_free(v); |
1575 | v = qapi_dealloc_visitor_new(); |
1576 | visit_start_struct(v, NULL, NULL, 0, NULL); |
1577 | visit_type_q_obj_x_blockdev_set_iothread_arg_members(v, &arg, NULL); |
1578 | visit_end_struct(v, NULL); |
1579 | visit_free(v); |
1580 | } |
1581 | |
1582 | /* Dummy declaration to prevent empty .o file */ |
1583 | char qapi_dummy_qapi_commands_block_core_c; |
1584 | |