#
# @filename: Name of the extent file
#
-# @format: Extent type (e.g. FLAT or SPARSE)
+# @format: Extent type (e.g. FLAT or SPARSE)
#
# @virtual-size: Number of bytes covered by this extent
#
#
# @zero: whether the virtual blocks read as zeroes
#
+# @compressed: true if the data is stored compressed (since 8.2)
+#
# @depth: number of layers (0 = top image, 1 = top image's backing
# file, ..., n - 1 = bottom image (where n is the number of images
# in the chain)) before reaching one for which the range is
##
{ 'struct': 'MapEntry',
'data': {'start': 'int', 'length': 'int', 'data': 'bool',
- 'zero': 'bool', 'depth': 'int', 'present': 'bool',
- '*offset': 'int', '*filename': 'str' } }
+ 'zero': 'bool', 'compressed': 'bool', 'depth': 'int',
+ 'present': 'bool', '*offset': 'int', '*filename': 'str' } }
##
# @BlockdevCacheInfo:
# @min_wr_latency_ns: Minimum latency of write operations in the
# defined interval, in nanoseconds.
#
-# @min_zone_append_latency_ns: Minimum latency of zone append operations
-# in the defined interval, in nanoseconds
-# (since 8.1)
+# @min_zone_append_latency_ns: Minimum latency of zone append
+# operations in the defined interval, in nanoseconds (since 8.1)
#
# @min_flush_latency_ns: Minimum latency of flush operations in the
# defined interval, in nanoseconds.
# @max_wr_latency_ns: Maximum latency of write operations in the
# defined interval, in nanoseconds.
#
-# @max_zone_append_latency_ns: Maximum latency of zone append operations
-# in the defined interval, in nanoseconds
-# (since 8.1)
+# @max_zone_append_latency_ns: Maximum latency of zone append
+# operations in the defined interval, in nanoseconds (since 8.1)
#
# @max_flush_latency_ns: Maximum latency of flush operations in the
# defined interval, in nanoseconds.
# @avg_wr_latency_ns: Average latency of write operations in the
# defined interval, in nanoseconds.
#
-# @avg_zone_append_latency_ns: Average latency of zone append operations
-# in the defined interval, in nanoseconds
-# (since 8.1)
+# @avg_zone_append_latency_ns: Average latency of zone append
+# operations in the defined interval, in nanoseconds (since 8.1)
#
# @avg_flush_latency_ns: Average latency of flush operations in the
# defined interval, in nanoseconds.
# the defined interval.
#
# @avg_zone_append_queue_depth: Average number of pending zone append
-# operations in the defined interval
-# (since 8.1).
+# operations in the defined interval (since 8.1).
#
# Since: 2.5
##
#
# @wr_bytes: The number of bytes written by the device.
#
-# @zone_append_bytes: The number of bytes appended by the zoned devices
-# (since 8.1)
+# @zone_append_bytes: The number of bytes appended by the zoned
+# devices (since 8.1)
#
# @unmap_bytes: The number of bytes unmapped by the device (Since 4.2)
#
# @wr_operations: The number of write operations performed by the
# device.
#
-# @zone_append_operations: The number of zone append operations performed
-# by the zoned devices (since 8.1)
+# @zone_append_operations: The number of zone append operations
+# performed by the zoned devices (since 8.1)
#
# @flush_operations: The number of cache flush operations performed by
# the device (since 0.15)
# 0.15).
#
# @zone_append_total_time_ns: Total time spent on zone append writes
-# in nanoseconds (since 8.1)
+# in nanoseconds (since 8.1)
#
# @flush_total_time_ns: Total time spent on cache flushes in
# nanoseconds (since 0.15).
# @wr_merged: Number of write requests that have been merged into
# another request (Since 2.3).
#
-# @zone_append_merged: Number of zone append requests that have been merged
-# into another request (since 8.1)
+# @zone_append_merged: Number of zone append requests that have been
+# merged into another request (since 8.1)
#
# @unmap_merged: Number of unmap requests that have been merged into
# another request (Since 4.2)
# @failed_wr_operations: The number of failed write operations
# performed by the device (Since 2.5)
#
-# @failed_zone_append_operations: The number of failed zone append write
-# operations performed by the zoned devices
-# (since 8.1)
+# @failed_zone_append_operations: The number of failed zone append
+# write operations performed by the zoned devices (since 8.1)
#
# @failed_flush_operations: The number of failed flush operations
# performed by the device (Since 2.5)
# @invalid_wr_operations: The number of invalid write operations
# performed by the device (Since 2.5)
#
-# @invalid_zone_append_operations: The number of invalid zone append operations
-# performed by the zoned device (since 8.1)
+# @invalid_zone_append_operations: The number of invalid zone append
+# operations performed by the zoned device (since 8.1)
#
# @invalid_flush_operations: The number of invalid flush operations
# performed by the device (Since 2.5)
#
# @wr_latency_histogram: @BlockLatencyHistogramInfo. (Since 4.0)
#
-# @zone_append_latency_histogram: @BlockLatencyHistogramInfo. (since 8.1)
+# @zone_append_latency_histogram: @BlockLatencyHistogramInfo.
+# (since 8.1)
#
# @flush_latency_histogram: @BlockLatencyHistogramInfo. (Since 4.0)
#
#
# @parent: This describes the file block device if it has one.
# Contains recursively the statistics of the underlying protocol
-# (e.g. the host file for a qcow2 image). If there is no
+# (e.g. the host file for a qcow2 image). If there is no
# underlying protocol, this field is omitted
#
# @backing: This describes the backing block device if it has one.
{ 'enum': 'MirrorCopyMode',
'data': ['background', 'write-blocking'] }
+##
+# @BlockJobInfoMirror:
+#
+# Information specific to mirror block jobs.
+#
+# @actively-synced: Whether the source is actively synced to the
+# target, i.e. same data and new writes are done synchronously to
+# both.
+#
+# Since 8.2
+##
+{ 'struct': 'BlockJobInfoMirror',
+ 'data': { 'actively-synced': 'bool' } }
+
##
# @BlockJobInfo:
#
#
# Since: 1.1
##
-{ 'struct': 'BlockJobInfo',
- 'data': {'type': 'str', 'device': 'str', 'len': 'int',
+{ 'union': 'BlockJobInfo',
+ 'base': {'type': 'JobType', 'device': 'str', 'len': 'int',
'offset': 'int', 'busy': 'bool', 'paused': 'bool', 'speed': 'int',
'io-status': 'BlockDeviceIoStatus', 'ready': 'bool',
'status': 'JobStatus',
'auto-finalize': 'bool', 'auto-dismiss': 'bool',
- '*error': 'str' } }
+ '*error': 'str' },
+ 'discriminator': 'type',
+ 'data': { 'mirror': 'BlockJobInfoMirror' } }
##
# @query-block-jobs:
# @format: the format of the overlay image, default is 'qcow2'.
#
# @mode: whether and how QEMU should create a new image, default is
-# 'absolute-paths'.
+# 'absolute-paths'.
##
{ 'struct': 'BlockdevSnapshotSync',
'data': { '*device': 'str', '*node-name': 'str',
#
# @bitmap: The name of a dirty bitmap to use. Must be present if sync
# is "bitmap" or "incremental". Can be present if sync is "full"
-# or "top". Must not be present otherwise.
+# or "top". Must not be present otherwise.
# (Since 2.4 (drive-backup), 3.1 (blockdev-backup))
#
# @bitmap-mode: Specifies the type of data the bitmap should contain
{ 'command': 'block-job-finalize', 'data': { 'id': 'str' },
'allow-preconfig': true }
+##
+# @BlockJobChangeOptionsMirror:
+#
+# @copy-mode: Switch to this copy mode. Currently, only the switch
+# from 'background' to 'write-blocking' is implemented.
+#
+# Since: 8.2
+##
+{ 'struct': 'BlockJobChangeOptionsMirror',
+ 'data': { 'copy-mode' : 'MirrorCopyMode' } }
+
+##
+# @BlockJobChangeOptions:
+#
+# Block job options that can be changed after job creation.
+#
+# @id: The job identifier
+#
+# @type: The job type
+#
+# Since 8.2
+##
+{ 'union': 'BlockJobChangeOptions',
+ 'base': { 'id': 'str', 'type': 'JobType' },
+ 'discriminator': 'type',
+ 'data': { 'mirror': 'BlockJobChangeOptionsMirror' } }
+
+##
+# @block-job-change:
+#
+# Change the block job's options.
+#
+# Since: 8.2
+##
+{ 'command': 'block-job-change',
+ 'data': 'BlockJobChangeOptions', 'boxed': true }
+
##
# @BlockdevDiscardOptions:
#
# @pass-discard-other: whether discard requests for the data source
# should be issued on other occasions where a cluster gets freed
#
-# @discard-no-unref: when enabled, discards from the guest will not cause
-# cluster allocations to be relinquished. This prevents qcow2 fragmentation
-# that would be caused by such discards. Besides potential
-# performance degradation, such fragmentation can lead to increased
-# allocation of clusters past the end of the image file,
-# resulting in image files whose file length can grow much larger
-# than their guest disk size would suggest.
-# If image file length is of concern (e.g. when storing qcow2
-# images directly on block devices), you should consider enabling
-# this option. (since 8.1)
+# @discard-no-unref: when enabled, discards from the guest will not
+# cause cluster allocations to be relinquished. This prevents
+# qcow2 fragmentation that would be caused by such discards.
+# Besides potential performance degradation, such fragmentation
+# can lead to increased allocation of clusters past the end of the
+# image file, resulting in image files whose file length can grow
+# much larger than their guest disk size would suggest. If image
+# file length is of concern (e.g. when storing qcow2 images
+# directly on block devices), you should consider enabling this
+# option. (since 8.1)
#
# @overlap-check: which overlap checks to perform for writes to the
# image, defaults to 'cached' (since 2.2)
#
# @subformat: vhdx subformat (default: dynamic)
#
-# @block-state-zero: Force use of payload blocks of type
-# 'ZERO'. Non-standard, but default. Do not set to 'off' when
-# using 'qemu-img convert' with subformat=dynamic.
+# @block-state-zero: Force use of payload blocks of type 'ZERO'.
+# Non-standard, but default. Do not set to 'off' when using
+# 'qemu-img convert' with subformat=dynamic.
#
# Since: 2.12
##