mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
f5cf31c575
The generated QEMU QMP reference is now structured as follows: 1.1 Introduction 1.2 Stability Considerations 1.3 Common data types 1.4 Socket data types 1.5 VM run state 1.6 Cryptography 1.7 Block devices 1.7.1 Block core (VM unrelated) 1.7.2 QAPI block definitions (vm unrelated) 1.8 Character devices 1.9 Net devices 1.10 Rocker switch device 1.11 TPM (trusted platform module) devices 1.12 Remote desktop 1.12.1 Spice 1.12.2 VNC 1.13 Input 1.14 Migration 1.15 Transactions 1.16 Tracing 1.17 QMP introspection 1.18 Miscellanea Section "1.18 Miscellanea" is still too big: it documents 134 symbols. Section "1.7.1 Block core (VM unrelated)" is also rather big: 128 symbols. All the others are of reasonable size. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1503602048-12268-17-git-send-email-armbru@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
347 lines
9.5 KiB
Python
347 lines
9.5 KiB
Python
# -*- Mode: Python -*-
|
|
|
|
##
|
|
# = Block devices
|
|
##
|
|
|
|
{ 'include': 'block-core.json' }
|
|
|
|
##
|
|
# == Additional block stuff (VM related)
|
|
##
|
|
|
|
##
|
|
# @BiosAtaTranslation:
|
|
#
|
|
# Policy that BIOS should use to interpret cylinder/head/sector
|
|
# addresses. Note that Bochs BIOS and SeaBIOS will not actually
|
|
# translate logical CHS to physical; instead, they will use logical
|
|
# block addressing.
|
|
#
|
|
# @auto: If cylinder/heads/sizes are passed, choose between none and LBA
|
|
# depending on the size of the disk. If they are not passed,
|
|
# choose none if QEMU can guess that the disk had 16 or fewer
|
|
# heads, large if QEMU can guess that the disk had 131072 or
|
|
# fewer tracks across all heads (i.e. cylinders*heads<131072),
|
|
# otherwise LBA.
|
|
#
|
|
# @none: The physical disk geometry is equal to the logical geometry.
|
|
#
|
|
# @lba: Assume 63 sectors per track and one of 16, 32, 64, 128 or 255
|
|
# heads (if fewer than 255 are enough to cover the whole disk
|
|
# with 1024 cylinders/head). The number of cylinders/head is
|
|
# then computed based on the number of sectors and heads.
|
|
#
|
|
# @large: The number of cylinders per head is scaled down to 1024
|
|
# by correspondingly scaling up the number of heads.
|
|
#
|
|
# @rechs: Same as @large, but first convert a 16-head geometry to
|
|
# 15-head, by proportionally scaling up the number of
|
|
# cylinders/head.
|
|
#
|
|
# Since: 2.0
|
|
##
|
|
{ 'enum': 'BiosAtaTranslation',
|
|
'data': ['auto', 'none', 'lba', 'large', 'rechs']}
|
|
|
|
##
|
|
# @FloppyDriveType:
|
|
#
|
|
# Type of Floppy drive to be emulated by the Floppy Disk Controller.
|
|
#
|
|
# @144: 1.44MB 3.5" drive
|
|
# @288: 2.88MB 3.5" drive
|
|
# @120: 1.2MB 5.25" drive
|
|
# @none: No drive connected
|
|
# @auto: Automatically determined by inserted media at boot
|
|
#
|
|
# Since: 2.6
|
|
##
|
|
{ 'enum': 'FloppyDriveType',
|
|
'data': ['144', '288', '120', 'none', 'auto']}
|
|
|
|
##
|
|
# @BlockdevSnapshotInternal:
|
|
#
|
|
# @device: the device name or node-name of a root node to generate the snapshot
|
|
# from
|
|
#
|
|
# @name: the name of the internal snapshot to be created
|
|
#
|
|
# Notes: In transaction, if @name is empty, or any snapshot matching @name
|
|
# exists, the operation will fail. Only some image formats support it,
|
|
# for example, qcow2, rbd, and sheepdog.
|
|
#
|
|
# Since: 1.7
|
|
##
|
|
{ 'struct': 'BlockdevSnapshotInternal',
|
|
'data': { 'device': 'str', 'name': 'str' } }
|
|
|
|
##
|
|
# @blockdev-snapshot-internal-sync:
|
|
#
|
|
# Synchronously take an internal snapshot of a block device, when the
|
|
# format of the image used supports it. If the name is an empty
|
|
# string, or a snapshot with name already exists, the operation will
|
|
# fail.
|
|
#
|
|
# For the arguments, see the documentation of BlockdevSnapshotInternal.
|
|
#
|
|
# Returns: nothing on success
|
|
#
|
|
# If @device is not a valid block device, GenericError
|
|
#
|
|
# If any snapshot matching @name exists, or @name is empty,
|
|
# GenericError
|
|
#
|
|
# If the format of the image used does not support it,
|
|
# BlockFormatFeatureNotSupported
|
|
#
|
|
# Since: 1.7
|
|
#
|
|
# Example:
|
|
#
|
|
# -> { "execute": "blockdev-snapshot-internal-sync",
|
|
# "arguments": { "device": "ide-hd0",
|
|
# "name": "snapshot0" }
|
|
# }
|
|
# <- { "return": {} }
|
|
#
|
|
##
|
|
{ 'command': 'blockdev-snapshot-internal-sync',
|
|
'data': 'BlockdevSnapshotInternal' }
|
|
|
|
##
|
|
# @blockdev-snapshot-delete-internal-sync:
|
|
#
|
|
# Synchronously delete an internal snapshot of a block device, when the format
|
|
# of the image used support it. The snapshot is identified by name or id or
|
|
# both. One of the name or id is required. Return SnapshotInfo for the
|
|
# successfully deleted snapshot.
|
|
#
|
|
# @device: the device name or node-name of a root node to delete the snapshot
|
|
# from
|
|
#
|
|
# @id: optional the snapshot's ID to be deleted
|
|
#
|
|
# @name: optional the snapshot's name to be deleted
|
|
#
|
|
# Returns: SnapshotInfo on success
|
|
# If @device is not a valid block device, GenericError
|
|
# If snapshot not found, GenericError
|
|
# If the format of the image used does not support it,
|
|
# BlockFormatFeatureNotSupported
|
|
# If @id and @name are both not specified, GenericError
|
|
#
|
|
# Since: 1.7
|
|
#
|
|
# Example:
|
|
#
|
|
# -> { "execute": "blockdev-snapshot-delete-internal-sync",
|
|
# "arguments": { "device": "ide-hd0",
|
|
# "name": "snapshot0" }
|
|
# }
|
|
# <- { "return": {
|
|
# "id": "1",
|
|
# "name": "snapshot0",
|
|
# "vm-state-size": 0,
|
|
# "date-sec": 1000012,
|
|
# "date-nsec": 10,
|
|
# "vm-clock-sec": 100,
|
|
# "vm-clock-nsec": 20
|
|
# }
|
|
# }
|
|
#
|
|
##
|
|
{ 'command': 'blockdev-snapshot-delete-internal-sync',
|
|
'data': { 'device': 'str', '*id': 'str', '*name': 'str'},
|
|
'returns': 'SnapshotInfo' }
|
|
|
|
##
|
|
# @eject:
|
|
#
|
|
# Ejects a device from a removable drive.
|
|
#
|
|
# @device: Block device name (deprecated, use @id instead)
|
|
#
|
|
# @id: The name or QOM path of the guest device (since: 2.8)
|
|
#
|
|
# @force: If true, eject regardless of whether the drive is locked.
|
|
# If not specified, the default value is false.
|
|
#
|
|
# Returns: Nothing on success
|
|
#
|
|
# If @device is not a valid block device, DeviceNotFound
|
|
#
|
|
# Notes: Ejecting a device with no media results in success
|
|
#
|
|
# Since: 0.14.0
|
|
#
|
|
# Example:
|
|
#
|
|
# -> { "execute": "eject", "arguments": { "id": "ide1-0-1" } }
|
|
# <- { "return": {} }
|
|
##
|
|
{ 'command': 'eject',
|
|
'data': { '*device': 'str',
|
|
'*id': 'str',
|
|
'*force': 'bool' } }
|
|
|
|
##
|
|
# @nbd-server-start:
|
|
#
|
|
# Start an NBD server listening on the given host and port. Block
|
|
# devices can then be exported using @nbd-server-add. The NBD
|
|
# server will present them as named exports; for example, another
|
|
# QEMU instance could refer to them as "nbd:HOST:PORT:exportname=NAME".
|
|
#
|
|
# @addr: Address on which to listen.
|
|
# @tls-creds: (optional) ID of the TLS credentials object. Since 2.6
|
|
#
|
|
# Returns: error if the server is already running.
|
|
#
|
|
# Since: 1.3.0
|
|
##
|
|
{ 'command': 'nbd-server-start',
|
|
'data': { 'addr': 'SocketAddressLegacy',
|
|
'*tls-creds': 'str'} }
|
|
|
|
##
|
|
# @nbd-server-add:
|
|
#
|
|
# Export a block node to QEMU's embedded NBD server.
|
|
#
|
|
# @device: The device name or node name of the node to be exported
|
|
#
|
|
# @writable: Whether clients should be able to write to the device via the
|
|
# NBD connection (default false).
|
|
#
|
|
# Returns: error if the device is already marked for export.
|
|
#
|
|
# Since: 1.3.0
|
|
##
|
|
{ 'command': 'nbd-server-add', 'data': {'device': 'str', '*writable': 'bool'} }
|
|
|
|
##
|
|
# @nbd-server-stop:
|
|
#
|
|
# Stop QEMU's embedded NBD server, and unregister all devices previously
|
|
# added via @nbd-server-add.
|
|
#
|
|
# Since: 1.3.0
|
|
##
|
|
{ 'command': 'nbd-server-stop' }
|
|
|
|
##
|
|
# @DEVICE_TRAY_MOVED:
|
|
#
|
|
# Emitted whenever the tray of a removable device is moved by the guest or by
|
|
# HMP/QMP commands
|
|
#
|
|
# @device: Block device name. This is always present for compatibility
|
|
# reasons, but it can be empty ("") if the image does not
|
|
# have a device name associated.
|
|
#
|
|
# @id: The name or QOM path of the guest device (since 2.8)
|
|
#
|
|
# @tray-open: true if the tray has been opened or false if it has been closed
|
|
#
|
|
# Since: 1.1
|
|
#
|
|
# Example:
|
|
#
|
|
# <- { "event": "DEVICE_TRAY_MOVED",
|
|
# "data": { "device": "ide1-cd0",
|
|
# "id": "/machine/unattached/device[22]",
|
|
# "tray-open": true
|
|
# },
|
|
# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
|
|
#
|
|
##
|
|
{ 'event': 'DEVICE_TRAY_MOVED',
|
|
'data': { 'device': 'str', 'id': 'str', 'tray-open': 'bool' } }
|
|
|
|
##
|
|
# @QuorumOpType:
|
|
#
|
|
# An enumeration of the quorum operation types
|
|
#
|
|
# @read: read operation
|
|
#
|
|
# @write: write operation
|
|
#
|
|
# @flush: flush operation
|
|
#
|
|
# Since: 2.6
|
|
##
|
|
{ 'enum': 'QuorumOpType',
|
|
'data': [ 'read', 'write', 'flush' ] }
|
|
|
|
##
|
|
# @QUORUM_FAILURE:
|
|
#
|
|
# Emitted by the Quorum block driver if it fails to establish a quorum
|
|
#
|
|
# @reference: device name if defined else node name
|
|
#
|
|
# @sector-num: number of the first sector of the failed read operation
|
|
#
|
|
# @sectors-count: failed read operation sector count
|
|
#
|
|
# Note: This event is rate-limited.
|
|
#
|
|
# Since: 2.0
|
|
#
|
|
# Example:
|
|
#
|
|
# <- { "event": "QUORUM_FAILURE",
|
|
# "data": { "reference": "usr1", "sector-num": 345435, "sectors-count": 5 },
|
|
# "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
|
|
#
|
|
##
|
|
{ 'event': 'QUORUM_FAILURE',
|
|
'data': { 'reference': 'str', 'sector-num': 'int', 'sectors-count': 'int' } }
|
|
|
|
##
|
|
# @QUORUM_REPORT_BAD:
|
|
#
|
|
# Emitted to report a corruption of a Quorum file
|
|
#
|
|
# @type: quorum operation type (Since 2.6)
|
|
#
|
|
# @error: error message. Only present on failure. This field
|
|
# contains a human-readable error message. There are no semantics other
|
|
# than that the block layer reported an error and clients should not
|
|
# try to interpret the error string.
|
|
#
|
|
# @node-name: the graph node name of the block driver state
|
|
#
|
|
# @sector-num: number of the first sector of the failed read operation
|
|
#
|
|
# @sectors-count: failed read operation sector count
|
|
#
|
|
# Note: This event is rate-limited.
|
|
#
|
|
# Since: 2.0
|
|
#
|
|
# Example:
|
|
#
|
|
# 1. Read operation
|
|
#
|
|
# { "event": "QUORUM_REPORT_BAD",
|
|
# "data": { "node-name": "node0", "sector-num": 345435, "sectors-count": 5,
|
|
# "type": "read" },
|
|
# "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
|
|
#
|
|
# 2. Flush operation
|
|
#
|
|
# { "event": "QUORUM_REPORT_BAD",
|
|
# "data": { "node-name": "node0", "sector-num": 0, "sectors-count": 2097120,
|
|
# "type": "flush", "error": "Broken pipe" },
|
|
# "timestamp": { "seconds": 1456406829, "microseconds": 291763 } }
|
|
#
|
|
##
|
|
{ 'event': 'QUORUM_REPORT_BAD',
|
|
'data': { 'type': 'QuorumOpType', '*error': 'str', 'node-name': 'str',
|
|
'sector-num': 'int', 'sectors-count': 'int' } }
|