aboutsummaryrefslogtreecommitdiff
path: root/qmp-commands.hx
diff options
context:
space:
mode:
Diffstat (limited to 'qmp-commands.hx')
-rw-r--r--qmp-commands.hx148
1 files changed, 87 insertions, 61 deletions
diff --git a/qmp-commands.hx b/qmp-commands.hx
index 97975a5207..7e3f4b9a59 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -199,10 +199,7 @@ EQMP
{
.name = "cont",
.args_type = "",
- .params = "",
- .help = "resume emulation",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_cont,
+ .mhandler.cmd_new = qmp_marshal_input_cont,
},
SQMP
@@ -244,10 +241,7 @@ EQMP
{
.name = "system_powerdown",
.args_type = "",
- .params = "",
- .help = "send system power down event",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_system_powerdown,
+ .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
},
SQMP
@@ -355,11 +349,8 @@ EQMP
{
.name = "memsave",
- .args_type = "val:l,size:i,filename:s",
- .params = "addr size file",
- .help = "save to disk virtual memory dump starting at 'addr' of size 'size'",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_memory_save,
+ .args_type = "val:l,size:i,filename:s,cpu:i?",
+ .mhandler.cmd_new = qmp_marshal_input_memsave,
},
SQMP
@@ -373,6 +364,7 @@ Arguments:
- "val": the starting address (json-int)
- "size": the memory size, in bytes (json-int)
- "filename": file path (json-string)
+- "cpu": virtual CPU index (json-int, optional)
Example:
@@ -382,17 +374,12 @@ Example:
"filename": "/tmp/virtual-mem-dump" } }
<- { "return": {} }
-Note: Depends on the current CPU.
-
EQMP
{
.name = "pmemsave",
.args_type = "val:l,size:i,filename:s",
- .params = "addr size file",
- .help = "save to disk physical memory dump starting at 'addr' of size 'size'",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_physical_memory_save,
+ .mhandler.cmd_new = qmp_marshal_input_pmemsave,
},
SQMP
@@ -420,10 +407,7 @@ EQMP
{
.name = "inject-nmi",
.args_type = "",
- .params = "",
- .help = "",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_inject_nmi,
+ .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
},
SQMP
@@ -487,10 +471,7 @@ EQMP
{
.name = "migrate_cancel",
.args_type = "",
- .params = "",
- .help = "cancel the current VM migration",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_migrate_cancel,
+ .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
},
SQMP
@@ -511,10 +492,7 @@ EQMP
{
.name = "migrate_set_speed",
.args_type = "value:o",
- .params = "value",
- .help = "set maximum speed (in bytes) for migrations",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_migrate_set_speed,
+ .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
},
SQMP
@@ -537,10 +515,7 @@ EQMP
{
.name = "migrate_set_downtime",
.args_type = "value:T",
- .params = "value",
- .help = "set maximum tolerated downtime (in seconds) for migrations",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_migrate_set_downtime,
+ .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
},
SQMP
@@ -658,10 +633,7 @@ EQMP
{
.name = "block_resize",
.args_type = "device:B,size:o",
- .params = "device size",
- .help = "resize a block image",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_block_resize,
+ .mhandler.cmd_new = qmp_marshal_input_block_resize,
},
SQMP
@@ -684,10 +656,8 @@ EQMP
{
.name = "blockdev-snapshot-sync",
- .args_type = "device:B,snapshot-file:s?,format:s?",
- .params = "device [new-image-file] [format]",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_snapshot_blkdev,
+ .args_type = "device:B,snapshot-file:s,format:s?",
+ .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
},
SQMP
@@ -719,11 +689,7 @@ EQMP
{
.name = "balloon",
.args_type = "value:M",
- .params = "target",
- .help = "request VM to change its memory allocation (in MB)",
- .user_print = monitor_user_noop,
- .mhandler.cmd_async = do_balloon,
- .flags = MONITOR_CMD_ASYNC,
+ .mhandler.cmd_new = qmp_marshal_input_balloon,
},
SQMP
@@ -746,10 +712,7 @@ EQMP
{
.name = "set_link",
.args_type = "name:s,up:b",
- .params = "name on|off",
- .help = "change the link status of a network adapter",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_set_link,
+ .mhandler.cmd_new = qmp_marshal_input_set_link,
},
SQMP
@@ -825,10 +788,7 @@ EQMP
{
.name = "block_passwd",
.args_type = "device:B,password:s",
- .params = "block_passwd device password",
- .help = "set the password of encrypted block devices",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_block_set_passwd,
+ .mhandler.cmd_new = qmp_marshal_input_block_passwd,
},
SQMP
@@ -851,6 +811,44 @@ Example:
EQMP
{
+ .name = "block_set_io_throttle",
+ .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
+ .params = "device bps bps_rd bps_wr iops iops_rd iops_wr",
+ .help = "change I/O throttle limits for a block drive",
+ .user_print = monitor_user_noop,
+ .mhandler.cmd_new = do_block_set_io_throttle,
+ },
+
+SQMP
+block_set_io_throttle
+------------
+
+Change I/O throttle limits for a block drive.
+
+Arguments:
+
+- "device": device name (json-string)
+- "bps": total throughput limit in bytes per second(json-int)
+- "bps_rd": read throughput limit in bytes per second(json-int)
+- "bps_wr": read throughput limit in bytes per second(json-int)
+- "iops": total I/O operations per second(json-int)
+- "iops_rd": read I/O operations per second(json-int)
+- "iops_wr": write I/O operations per second(json-int)
+
+Example:
+
+-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
+ "bps": "1000000",
+ "bps_rd": "0",
+ "bps_wr": "0",
+ "iops": "0",
+ "iops_rd": "0",
+ "iops_wr": "0" } }
+<- { "return": {} }
+
+EQMP
+
+ {
.name = "set_password",
.args_type = "protocol:s,password:s,connected:s?",
.params = "protocol password action-if-connected",
@@ -963,10 +961,7 @@ EQMP
{
.name = "human-monitor-command",
.args_type = "command-line:s,cpu-index:i?",
- .params = "",
- .help = "",
- .user_print = monitor_user_noop,
- .mhandler.cmd_new = do_hmp_passthrough,
+ .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
},
SQMP
@@ -1152,6 +1147,13 @@ Each json-object contain the following:
"tftp", "vdi", "vmdk", "vpc", "vvfat"
- "backing_file": backing file name (json-string, optional)
- "encrypted": true if encrypted, false otherwise (json-bool)
+ - "bps": limit total bytes per second (json-int)
+ - "bps_rd": limit read bytes per second (json-int)
+ - "bps_wr": limit write bytes per second (json-int)
+ - "iops": limit total I/O operations per second (json-int)
+ - "iops_rd": limit read operations per second (json-int)
+ - "iops_wr": limit write operations per second (json-int)
+
- "io-status": I/O operation status, only present if the device supports it
and the VM is configured to stop on errors. It's always reset
to "ok" when the "cont" command is issued (json_string, optional)
@@ -1171,7 +1173,13 @@ Example:
"ro":false,
"drv":"qcow2",
"encrypted":false,
- "file":"disks/test.img"
+ "file":"disks/test.img",
+ "bps":1000000,
+ "bps_rd":0,
+ "bps_wr":0,
+ "iops":1000000,
+ "iops_rd":0,
+ "iops_wr":0,
},
"type":"unknown"
},
@@ -2001,3 +2009,21 @@ EQMP
.args_type = "",
.mhandler.cmd_new = qmp_marshal_input_query_balloon,
},
+
+ {
+ .name = "qom-list",
+ .args_type = "path:s",
+ .mhandler.cmd_new = qmp_marshal_input_qom_list,
+ },
+
+ {
+ .name = "qom-set",
+ .args_type = "path:s,property:s,opts:O",
+ .mhandler.cmd_new = qmp_qom_set,
+ },
+
+ {
+ .name = "qom-get",
+ .args_type = "path:s,property:s",
+ .mhandler.cmd_new = qmp_qom_get,
+ },