| # -*- Mode: Python -*- |
| # |
| # QAPI block definitions (vm related) |
| |
| # QAPI block core definitions |
| { 'include': 'block-core.json' } |
| |
| ## |
| # @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. |
| # |
| # 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 |
| ## |
| { '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 |
| ## |
| { 'command': 'blockdev-snapshot-delete-internal-sync', |
| 'data': { 'device': 'str', '*id': 'str', '*name': 'str'}, |
| 'returns': 'SnapshotInfo' } |
| |
| ## |
| # @eject: |
| # |
| # Ejects a device from a removable drive. |
| # |
| # @device: The name of the device |
| # |
| # @force: @optional 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 will no media results in success |
| # |
| # Since: 0.14.0 |
| ## |
| { 'command': 'eject', 'data': {'device': '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': 'SocketAddress', |
| '*tls-creds': 'str'} } |
| |
| ## |
| # @nbd-server-add: |
| # |
| # Export a device to QEMU's embedded NBD server. |
| # |
| # @device: Block device to be exported |
| # |
| # @writable: Whether clients should be able to write to the device via the |
| # NBD connection (default false). #optional |
| # |
| # 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: device name |
| # |
| # @tray-open: true if the tray has been opened or false if it has been closed |
| # |
| # Since: 1.1 |
| ## |
| { 'event': 'DEVICE_TRAY_MOVED', |
| 'data': { 'device': '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' ] } |