1# -*- Mode: Python -*- 2 3## 4# = QAPI block definitions 5## 6 7# QAPI block core definitions 8{ 'include': 'block-core.json' } 9 10## 11# == QAPI block definitions (vm unrelated) 12## 13 14## 15# @BiosAtaTranslation: 16# 17# Policy that BIOS should use to interpret cylinder/head/sector 18# addresses. Note that Bochs BIOS and SeaBIOS will not actually 19# translate logical CHS to physical; instead, they will use logical 20# block addressing. 21# 22# @auto: If cylinder/heads/sizes are passed, choose between none and LBA 23# depending on the size of the disk. If they are not passed, 24# choose none if QEMU can guess that the disk had 16 or fewer 25# heads, large if QEMU can guess that the disk had 131072 or 26# fewer tracks across all heads (i.e. cylinders*heads<131072), 27# otherwise LBA. 28# 29# @none: The physical disk geometry is equal to the logical geometry. 30# 31# @lba: Assume 63 sectors per track and one of 16, 32, 64, 128 or 255 32# heads (if fewer than 255 are enough to cover the whole disk 33# with 1024 cylinders/head). The number of cylinders/head is 34# then computed based on the number of sectors and heads. 35# 36# @large: The number of cylinders per head is scaled down to 1024 37# by correspondingly scaling up the number of heads. 38# 39# @rechs: Same as @large, but first convert a 16-head geometry to 40# 15-head, by proportionally scaling up the number of 41# cylinders/head. 42# 43# Since: 2.0 44## 45{ 'enum': 'BiosAtaTranslation', 46 'data': ['auto', 'none', 'lba', 'large', 'rechs']} 47 48## 49# @FloppyDriveType: 50# 51# Type of Floppy drive to be emulated by the Floppy Disk Controller. 52# 53# @144: 1.44MB 3.5" drive 54# @288: 2.88MB 3.5" drive 55# @120: 1.2MB 5.25" drive 56# @none: No drive connected 57# @auto: Automatically determined by inserted media at boot 58# 59# Since: 2.6 60## 61{ 'enum': 'FloppyDriveType', 62 'data': ['144', '288', '120', 'none', 'auto']} 63 64## 65# @BlockdevSnapshotInternal: 66# 67# @device: the device name or node-name of a root node to generate the snapshot 68# from 69# 70# @name: the name of the internal snapshot to be created 71# 72# Notes: In transaction, if @name is empty, or any snapshot matching @name 73# exists, the operation will fail. Only some image formats support it, 74# for example, qcow2, rbd, and sheepdog. 75# 76# Since: 1.7 77## 78{ 'struct': 'BlockdevSnapshotInternal', 79 'data': { 'device': 'str', 'name': 'str' } } 80 81## 82# @blockdev-snapshot-internal-sync: 83# 84# Synchronously take an internal snapshot of a block device, when the 85# format of the image used supports it. If the name is an empty 86# string, or a snapshot with name already exists, the operation will 87# fail. 88# 89# For the arguments, see the documentation of BlockdevSnapshotInternal. 90# 91# Returns: nothing on success 92# 93# If @device is not a valid block device, GenericError 94# 95# If any snapshot matching @name exists, or @name is empty, 96# GenericError 97# 98# If the format of the image used does not support it, 99# BlockFormatFeatureNotSupported 100# 101# Since: 1.7 102# 103# Example: 104# 105# -> { "execute": "blockdev-snapshot-internal-sync", 106# "arguments": { "device": "ide-hd0", 107# "name": "snapshot0" } 108# } 109# <- { "return": {} } 110# 111## 112{ 'command': 'blockdev-snapshot-internal-sync', 113 'data': 'BlockdevSnapshotInternal' } 114 115## 116# @blockdev-snapshot-delete-internal-sync: 117# 118# Synchronously delete an internal snapshot of a block device, when the format 119# of the image used support it. The snapshot is identified by name or id or 120# both. One of the name or id is required. Return SnapshotInfo for the 121# successfully deleted snapshot. 122# 123# @device: the device name or node-name of a root node to delete the snapshot 124# from 125# 126# @id: optional the snapshot's ID to be deleted 127# 128# @name: optional the snapshot's name to be deleted 129# 130# Returns: SnapshotInfo on success 131# If @device is not a valid block device, GenericError 132# If snapshot not found, GenericError 133# If the format of the image used does not support it, 134# BlockFormatFeatureNotSupported 135# If @id and @name are both not specified, GenericError 136# 137# Since: 1.7 138# 139# Example: 140# 141# -> { "execute": "blockdev-snapshot-delete-internal-sync", 142# "arguments": { "device": "ide-hd0", 143# "name": "snapshot0" } 144# } 145# <- { "return": { 146# "id": "1", 147# "name": "snapshot0", 148# "vm-state-size": 0, 149# "date-sec": 1000012, 150# "date-nsec": 10, 151# "vm-clock-sec": 100, 152# "vm-clock-nsec": 20 153# } 154# } 155# 156## 157{ 'command': 'blockdev-snapshot-delete-internal-sync', 158 'data': { 'device': 'str', '*id': 'str', '*name': 'str'}, 159 'returns': 'SnapshotInfo' } 160 161## 162# @eject: 163# 164# Ejects a device from a removable drive. 165# 166# @device: #optional Block device name (deprecated, use @id instead) 167# 168# @id: #optional The name or QOM path of the guest device (since: 2.8) 169# 170# @force: #optional If true, eject regardless of whether the drive is locked. 171# If not specified, the default value is false. 172# 173# Returns: Nothing on success 174# 175# If @device is not a valid block device, DeviceNotFound 176# 177# Notes: Ejecting a device with no media results in success 178# 179# Since: 0.14.0 180# 181# Example: 182# 183# -> { "execute": "eject", "arguments": { "device": "ide1-0-1" } } 184# <- { "return": {} } 185## 186{ 'command': 'eject', 187 'data': { '*device': 'str', 188 '*id': 'str', 189 '*force': 'bool' } } 190 191## 192# @nbd-server-start: 193# 194# Start an NBD server listening on the given host and port. Block 195# devices can then be exported using @nbd-server-add. The NBD 196# server will present them as named exports; for example, another 197# QEMU instance could refer to them as "nbd:HOST:PORT:exportname=NAME". 198# 199# @addr: Address on which to listen. 200# @tls-creds: (optional) ID of the TLS credentials object. Since 2.6 201# 202# Returns: error if the server is already running. 203# 204# Since: 1.3.0 205## 206{ 'command': 'nbd-server-start', 207 'data': { 'addr': 'SocketAddress', 208 '*tls-creds': 'str'} } 209 210## 211# @nbd-server-add: 212# 213# Export a block node to QEMU's embedded NBD server. 214# 215# @device: The device name or node name of the node to be exported 216# 217# @writable: Whether clients should be able to write to the device via the 218# NBD connection (default false). #optional 219# 220# Returns: error if the device is already marked for export. 221# 222# Since: 1.3.0 223## 224{ 'command': 'nbd-server-add', 'data': {'device': 'str', '*writable': 'bool'} } 225 226## 227# @nbd-server-stop: 228# 229# Stop QEMU's embedded NBD server, and unregister all devices previously 230# added via @nbd-server-add. 231# 232# Since: 1.3.0 233## 234{ 'command': 'nbd-server-stop' } 235 236## 237# @DEVICE_TRAY_MOVED: 238# 239# Emitted whenever the tray of a removable device is moved by the guest or by 240# HMP/QMP commands 241# 242# @device: Block device name. This is always present for compatibility 243# reasons, but it can be empty ("") if the image does not 244# have a device name associated. 245# 246# @id: The name or QOM path of the guest device (since 2.8) 247# 248# @tray-open: true if the tray has been opened or false if it has been closed 249# 250# Since: 1.1 251# 252# Example: 253# 254# <- { "event": "DEVICE_TRAY_MOVED", 255# "data": { "device": "ide1-cd0", 256# "id": "/machine/unattached/device[22]", 257# "tray-open": true 258# }, 259# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 260# 261## 262{ 'event': 'DEVICE_TRAY_MOVED', 263 'data': { 'device': 'str', 'id': 'str', 'tray-open': 'bool' } } 264 265## 266# @QuorumOpType: 267# 268# An enumeration of the quorum operation types 269# 270# @read: read operation 271# 272# @write: write operation 273# 274# @flush: flush operation 275# 276# Since: 2.6 277## 278{ 'enum': 'QuorumOpType', 279 'data': [ 'read', 'write', 'flush' ] } 280