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