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# @BlockdevSnapshotInternal 44# 45# @device: the name of the device to generate the snapshot from 46# 47# @name: the name of the internal snapshot to be created 48# 49# Notes: In transaction, if @name is empty, or any snapshot matching @name 50# exists, the operation will fail. Only some image formats support it, 51# for example, qcow2, rbd, and sheepdog. 52# 53# Since: 1.7 54## 55{ 'struct': 'BlockdevSnapshotInternal', 56 'data': { 'device': 'str', 'name': 'str' } } 57 58## 59# @blockdev-snapshot-internal-sync 60# 61# Synchronously take an internal snapshot of a block device, when the format 62# of the image used supports it. 63# 64# For the arguments, see the documentation of BlockdevSnapshotInternal. 65# 66# Returns: nothing on success 67# If @device is not a valid block device, DeviceNotFound 68# If any snapshot matching @name exists, or @name is empty, 69# GenericError 70# If the format of the image used does not support it, 71# BlockFormatFeatureNotSupported 72# 73# Since 1.7 74## 75{ 'command': 'blockdev-snapshot-internal-sync', 76 'data': 'BlockdevSnapshotInternal' } 77 78## 79# @blockdev-snapshot-delete-internal-sync 80# 81# Synchronously delete an internal snapshot of a block device, when the format 82# of the image used support it. The snapshot is identified by name or id or 83# both. One of the name or id is required. Return SnapshotInfo for the 84# successfully deleted snapshot. 85# 86# @device: the name of the device to delete the snapshot from 87# 88# @id: optional the snapshot's ID to be deleted 89# 90# @name: optional the snapshot's name to be deleted 91# 92# Returns: SnapshotInfo on success 93# If @device is not a valid block device, DeviceNotFound 94# If snapshot not found, GenericError 95# If the format of the image used does not support it, 96# BlockFormatFeatureNotSupported 97# If @id and @name are both not specified, GenericError 98# 99# Since 1.7 100## 101{ 'command': 'blockdev-snapshot-delete-internal-sync', 102 'data': { 'device': 'str', '*id': 'str', '*name': 'str'}, 103 'returns': 'SnapshotInfo' } 104 105## 106# @eject: 107# 108# Ejects a device from a removable drive. 109# 110# @device: The name of the device 111# 112# @force: @optional If true, eject regardless of whether the drive is locked. 113# If not specified, the default value is false. 114# 115# Returns: Nothing on success 116# If @device is not a valid block device, DeviceNotFound 117# 118# Notes: Ejecting a device will no media results in success 119# 120# Since: 0.14.0 121## 122{ 'command': 'eject', 'data': {'device': 'str', '*force': 'bool'} } 123 124## 125# @nbd-server-start: 126# 127# Start an NBD server listening on the given host and port. Block 128# devices can then be exported using @nbd-server-add. The NBD 129# server will present them as named exports; for example, another 130# QEMU instance could refer to them as "nbd:HOST:PORT:exportname=NAME". 131# 132# @addr: Address on which to listen. 133# 134# Returns: error if the server is already running. 135# 136# Since: 1.3.0 137## 138{ 'command': 'nbd-server-start', 139 'data': { 'addr': 'SocketAddress' } } 140 141## 142# @nbd-server-add: 143# 144# Export a device to QEMU's embedded NBD server. 145# 146# @device: Block device to be exported 147# 148# @writable: Whether clients should be able to write to the device via the 149# NBD connection (default false). #optional 150# 151# Returns: error if the device is already marked for export. 152# 153# Since: 1.3.0 154## 155{ 'command': 'nbd-server-add', 'data': {'device': 'str', '*writable': 'bool'} } 156 157## 158# @nbd-server-stop: 159# 160# Stop QEMU's embedded NBD server, and unregister all devices previously 161# added via @nbd-server-add. 162# 163# Since: 1.3.0 164## 165{ 'command': 'nbd-server-stop' } 166 167## 168# @DEVICE_TRAY_MOVED 169# 170# Emitted whenever the tray of a removable device is moved by the guest or by 171# HMP/QMP commands 172# 173# @device: device name 174# 175# @tray-open: true if the tray has been opened or false if it has been closed 176# 177# Since: 1.1 178## 179{ 'event': 'DEVICE_TRAY_MOVED', 180 'data': { 'device': 'str', 'tray-open': 'bool' } } 181