# -*- Mode: Python -*-
# vim: filetype=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']}

##
# @PRManagerInfo:
#
# Information about a persistent reservation manager
#
# @id: the identifier of the persistent reservation manager
#
# @connected: true if the persistent reservation manager is connected
#     to the underlying storage or helper
#
# Since: 3.0
##
{ 'struct': 'PRManagerInfo',
  'data': {'id': 'str', 'connected': 'bool'} }

##
# @query-pr-managers:
#
# Return a list of information about each persistent reservation
# manager.
#
# Returns: a list of manager info for each persistent reservation
#     manager
#
# Since: 3.0
##
{ 'command': 'query-pr-managers', 'returns': ['PRManagerInfo'],
  'allow-preconfig': true }

##
# @eject:
#
# Ejects the medium from a removable drive.
#
# @device: Block device name
#
# @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.
#
# Features:
#
# @deprecated: Member @device is deprecated.  Use @id instead.
#
# Errors:
#     - If @device is not a valid block device, DeviceNotFound
#
# .. note:: Ejecting a device with no media results in success.
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "eject", "arguments": { "id": "ide1-0-1" } }
#     <- { "return": {} }
##
{ 'command': 'eject',
  'data': { '*device': { 'type': 'str', 'features': [ 'deprecated' ] },
            '*id': 'str',
            '*force': 'bool' } }

##
# @blockdev-open-tray:
#
# Opens a block device's tray.  If there is a block driver state tree
# inserted as a medium, it will become inaccessible to the guest (but
# it will remain associated to the block device, so closing the tray
# will make it accessible again).
#
# If the tray was already open before, this will be a no-op.
#
# Once the tray opens, a `DEVICE_TRAY_MOVED` event is emitted.  There
# are cases in which no such event will be generated, these include:
#
# - if the guest has locked the tray, @force is false and the guest
#   does not respond to the eject request
# - if the BlockBackend denoted by @device does not have a guest
#   device attached to it
# - if the guest device does not have an actual tray
#
# @device: Block device name
#
# @id: The name or QOM path of the guest device (since: 2.8)
#
# @force: if false (the default), an eject request will be sent to the
#     guest if it has locked the tray (and the tray will not be opened
#     immediately); if true, the tray will be opened regardless of
#     whether it is locked
#
# Features:
#
# @deprecated: Member @device is deprecated.  Use @id instead.
#
# Since: 2.5
#
# .. qmp-example::
#
#     -> { "execute": "blockdev-open-tray",
#          "arguments": { "id": "ide0-1-0" } }
#
#     <- { "timestamp": { "seconds": 1418751016,
#                         "microseconds": 716996 },
#          "event": "DEVICE_TRAY_MOVED",
#          "data": { "device": "ide1-cd0",
#                    "id": "ide0-1-0",
#                    "tray-open": true } }
#
#     <- { "return": {} }
##
{ 'command': 'blockdev-open-tray',
  'data': { '*device': { 'type': 'str', 'features': [ 'deprecated' ] },
            '*id': 'str',
            '*force': 'bool' } }

##
# @blockdev-close-tray:
#
# Closes a block device's tray.  If there is a block driver state tree
# associated with the block device (which is currently ejected), that
# tree will be loaded as the medium.
#
# If the tray was already closed before, this will be a no-op.
#
# @device: Block device name
#
# @id: The name or QOM path of the guest device (since: 2.8)
#
# Features:
#
# @deprecated: Member @device is deprecated.  Use @id instead.
#
# Since: 2.5
#
# .. qmp-example::
#
#     -> { "execute": "blockdev-close-tray",
#          "arguments": { "id": "ide0-1-0" } }
#
#     <- { "timestamp": { "seconds": 1418751345,
#                         "microseconds": 272147 },
#          "event": "DEVICE_TRAY_MOVED",
#          "data": { "device": "ide1-cd0",
#                    "id": "ide0-1-0",
#                    "tray-open": false } }
#
#     <- { "return": {} }
##
{ 'command': 'blockdev-close-tray',
  'data': { '*device': { 'type': 'str', 'features': [ 'deprecated' ] },
            '*id': 'str' } }

##
# @blockdev-remove-medium:
#
# Removes a medium (a block driver state tree) from a block device.
# That block device's tray must currently be open (unless there is no
# attached guest device).
#
# If the tray is open and there is no medium inserted, this will be a
# no-op.
#
# @id: The name or QOM path of the guest device
#
# Since: 2.12
#
# .. qmp-example::
#
#     -> { "execute": "blockdev-remove-medium",
#          "arguments": { "id": "ide0-1-0" } }
#
#     <- { "error": { "class": "GenericError",
#                     "desc": "Tray of device 'ide0-1-0' is not open" } }
#
#     -> { "execute": "blockdev-open-tray",
#          "arguments": { "id": "ide0-1-0" } }
#
#     <- { "timestamp": { "seconds": 1418751627,
#                         "microseconds": 549958 },
#          "event": "DEVICE_TRAY_MOVED",
#          "data": { "device": "ide1-cd0",
#                    "id": "ide0-1-0",
#                    "tray-open": true } }
#
#     <- { "return": {} }
#
#     -> { "execute": "blockdev-remove-medium",
#          "arguments": { "id": "ide0-1-0" } }
#
#     <- { "return": {} }
##
{ 'command': 'blockdev-remove-medium',
  'data': { 'id': 'str' } }

##
# @blockdev-insert-medium:
#
# Inserts a medium (a block driver state tree) into a block device.
# That block device's tray must currently be open (unless there is no
# attached guest device) and there must be no medium inserted already.
#
# @id: The name or QOM path of the guest device
#
# @node-name: name of a node in the block driver state graph
#
# Since: 2.12
#
# .. qmp-example::
#
#     -> { "execute": "blockdev-add",
#          "arguments": {
#              "node-name": "node0",
#              "driver": "raw",
#              "file": { "driver": "file",
#                        "filename": "fedora.iso" } } }
#     <- { "return": {} }
#
#     -> { "execute": "blockdev-insert-medium",
#          "arguments": { "id": "ide0-1-0",
#                         "node-name": "node0" } }
#
#     <- { "return": {} }
##
{ 'command': 'blockdev-insert-medium',
  'data': { 'id': 'str',
            'node-name': 'str'} }

##
# @BlockdevChangeReadOnlyMode:
#
# Specifies the new read-only mode of a block device subject to the
# `blockdev-change-medium` command.
#
# @retain: Retains the current read-only mode
#
# @read-only: Makes the device read-only
#
# @read-write: Makes the device writable
#
# Since: 2.3
##
{ 'enum': 'BlockdevChangeReadOnlyMode',
  'data': ['retain', 'read-only', 'read-write'] }

##
# @blockdev-change-medium:
#
# Changes the medium inserted into a block device by ejecting the
# current medium and loading a new image file which is inserted as the
# new medium (this command combines `blockdev-open-tray`,
# `blockdev-remove-medium`, `blockdev-insert-medium` and
# `blockdev-close-tray`).
#
# @device: Block device name
#
# @id: The name or QOM path of the guest device (since: 2.8)
#
# @filename: filename of the new image to be loaded
#
# @format: format to open the new image with (defaults to the probed
#     format)
#
# @read-only-mode: change the read-only mode of the device; defaults
#     to 'retain'
#
# @force: if false (the default), an eject request through
#     `blockdev-open-tray` will be sent to the guest if it has locked
#     the tray (and the tray will not be opened immediately); if true,
#     the tray will be opened regardless of whether it is locked.
#     (since 7.1)
#
# Features:
#
# @deprecated: Member @device is deprecated.  Use @id instead.
#
# Since: 2.5
#
# .. qmp-example::
#    :title: Change a removable medium
#
#     -> { "execute": "blockdev-change-medium",
#          "arguments": { "id": "ide0-1-0",
#                         "filename": "/srv/images/Fedora-12-x86_64-DVD.iso",
#                         "format": "raw" } }
#     <- { "return": {} }
#
# .. qmp-example::
#    :title: Load a read-only medium into a writable drive
#
#     -> { "execute": "blockdev-change-medium",
#          "arguments": { "id": "floppyA",
#                         "filename": "/srv/images/ro.img",
#                         "format": "raw",
#                         "read-only-mode": "retain" } }
#
#     <- { "error":
#          { "class": "GenericError",
#            "desc": "Could not open '/srv/images/ro.img': Permission denied" } }
#
#     -> { "execute": "blockdev-change-medium",
#          "arguments": { "id": "floppyA",
#                         "filename": "/srv/images/ro.img",
#                         "format": "raw",
#                         "read-only-mode": "read-only" } }
#
#     <- { "return": {} }
##
{ 'command': 'blockdev-change-medium',
  'data': { '*device': { 'type': 'str', 'features': [ 'deprecated' ] },
            '*id': 'str',
            'filename': 'str',
            '*format': 'str',
            '*force': 'bool',
            '*read-only-mode': 'BlockdevChangeReadOnlyMode' } }

##
# @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
#
# .. qmp-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' } }

##
# @PR_MANAGER_STATUS_CHANGED:
#
# Emitted whenever the connected status of a persistent reservation
# manager changes.
#
# @id: The id of the PR manager object
#
# @connected: true if the PR manager is connected to a backend
#
# Since: 3.0
#
# .. qmp-example::
#
#     <- { "event": "PR_MANAGER_STATUS_CHANGED",
#          "data": { "id": "pr-helper0",
#                    "connected": true
#          },
#          "timestamp": { "seconds": 1519840375, "microseconds": 450486 } }
##
{ 'event': 'PR_MANAGER_STATUS_CHANGED',
  'data': { 'id': 'str', 'connected': 'bool' } }

##
# @block_set_io_throttle:
#
# Change I/O throttle limits for a block drive.
#
# Since QEMU 2.4, each device with I/O limits is member of a throttle
# group.
#
# If two or more devices are members of the same group, the limits
# will apply to the combined I/O of the whole group in a round-robin
# fashion.  Therefore, setting new I/O limits to a device will affect
# the whole group.
#
# The name of the group can be specified using the 'group' parameter.
# If the parameter is unset, it is assumed to be the current group of
# that device.  If it's not in any group yet, the name of the device
# will be used as the name for its group.
#
# The 'group' parameter can also be used to move a device to a
# different group.  In this case the limits specified in the
# parameters will be applied to the new group only.
#
# I/O limits can be disabled by setting all of them to 0.  In this
# case the device will be removed from its group and the rest of its
# members will not be affected.  The 'group' parameter is ignored.
#
# Errors:
#     - If @device is not a valid block device, DeviceNotFound
#
# Since: 1.1
#
# .. qmp-example::
#
#     -> { "execute": "block_set_io_throttle",
#          "arguments": { "id": "virtio-blk-pci0/virtio-backend",
#                         "bps": 0,
#                         "bps_rd": 0,
#                         "bps_wr": 0,
#                         "iops": 512,
#                         "iops_rd": 0,
#                         "iops_wr": 0,
#                         "bps_max": 0,
#                         "bps_rd_max": 0,
#                         "bps_wr_max": 0,
#                         "iops_max": 0,
#                         "iops_rd_max": 0,
#                         "iops_wr_max": 0,
#                         "bps_max_length": 0,
#                         "iops_size": 0 } }
#     <- { "return": {} }
#
# .. qmp-example::
#
#     -> { "execute": "block_set_io_throttle",
#          "arguments": { "id": "ide0-1-0",
#                         "bps": 1000000,
#                         "bps_rd": 0,
#                         "bps_wr": 0,
#                         "iops": 0,
#                         "iops_rd": 0,
#                         "iops_wr": 0,
#                         "bps_max": 8000000,
#                         "bps_rd_max": 0,
#                         "bps_wr_max": 0,
#                         "iops_max": 0,
#                         "iops_rd_max": 0,
#                         "iops_wr_max": 0,
#                         "bps_max_length": 60,
#                         "iops_size": 0 } }
#     <- { "return": {} }
##
{ 'command': 'block_set_io_throttle', 'boxed': true,
  'data': 'BlockIOThrottle',
  'allow-preconfig': true }

##
# @block-latency-histogram-set:
#
# Manage read, write and flush latency histograms for the device.
#
# If only @id parameter is specified, remove all present latency
# histograms for the device.  Otherwise, add/reset some of (or all)
# latency histograms.
#
# @id: The name or QOM path of the guest device.
#
# @boundaries: list of interval boundary values (see description in
#     `BlockLatencyHistogramInfo` definition).  If specified, all
#     latency histograms are removed, and empty ones created for all
#     io types with intervals corresponding to @boundaries (except for
#     io types, for which specific boundaries are set through the
#     following parameters).
#
# @boundaries-read: list of interval boundary values for read latency
#     histogram.  If specified, old read latency histogram is removed,
#     and empty one created with intervals corresponding to
#     @boundaries-read.  The parameter has higher priority then
#     @boundaries.
#
# @boundaries-write: list of interval boundary values for write
#     latency histogram.
#
# @boundaries-zap: list of interval boundary values for zone append
#     write latency histogram.
#
# @boundaries-flush: list of interval boundary values for flush
#     latency histogram.
#
# Errors:
#     - if device is not found or any boundary arrays are invalid.
#
# Since: 4.0
#
# .. qmp-example::
#    :annotated:
#
#    Set new histograms for all io types with intervals
#    [0, 10), [10, 50), [50, 100), [100, +inf)::
#
#     -> { "execute": "block-latency-histogram-set",
#          "arguments": { "id": "drive0",
#                         "boundaries": [10, 50, 100] } }
#     <- { "return": {} }
#
# .. qmp-example::
#    :annotated:
#
#    Set new histogram only for write, other histograms will remain
#    not changed (or not created)::
#
#     -> { "execute": "block-latency-histogram-set",
#          "arguments": { "id": "drive0",
#                         "boundaries-write": [10, 50, 100] } }
#     <- { "return": {} }
#
# .. qmp-example::
#    :annotated:
#
#    Set new histograms with the following intervals:
#
#    - read, flush: [0, 10), [10, 50), [50, 100), [100, +inf)
#    - write: [0, 1000), [1000, 5000), [5000, +inf)
#
#    ::
#
#     -> { "execute": "block-latency-histogram-set",
#          "arguments": { "id": "drive0",
#                         "boundaries": [10, 50, 100],
#                         "boundaries-write": [1000, 5000] } }
#     <- { "return": {} }
#
# .. qmp-example::
#    :annotated:
#
#    Remove all latency histograms::
#
#     -> { "execute": "block-latency-histogram-set",
#          "arguments": { "id": "drive0" } }
#     <- { "return": {} }
##
{ 'command': 'block-latency-histogram-set',
  'data': {'id': 'str',
           '*boundaries': ['uint64'],
           '*boundaries-read': ['uint64'],
           '*boundaries-write': ['uint64'],
           '*boundaries-zap': ['uint64'],
           '*boundaries-flush': ['uint64'] },
  'allow-preconfig': true }
