Block layer patches

- Expose block limits in monitor and qemu-img info
 - Resize: Refresh filter node size when its child was resized
 - Support configuring stats-intervals in -device (instead of only -drive)
 - luks: Fix QMP x-blockdev-amend crash and image creation with detached-header
 - iotests: Several test case fixes
 - Code cleanups
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAmkCAkIRHGt3b2xmQHJl
 ZGhhdC5jb20ACgkQfwmycsiPL9a3bA/+MMS9ocOyEiE4u66XbhQ4KgqxECtD/uzg
 3lYQJbfVpphizq0QQn1pAno9rpjdWnkwPv9TasAEM/9R/wz/ygjmXM9GyQDvNLoB
 t6dTyWKpsi4lVB7FNPBNQvyz7mHqWQULrhI/mNGLsbiss32SMiE08amjOzSrFSZJ
 zn8TsEzDB218Bv8OBH/eI1mMvZ2gG6+yzPf7znA5nSOtJkG1kGLPInZuRgeN7e7W
 DUl5EeiP3sGZh4pF/IyRc8BNMsvPR7Lk31PrPEXAz+7g0y8dfPukrcR0nY6nwekT
 omPhbIBfDOEKpYdBxheOdh9TkT40Fo2Oc7DIhzY4at3O02BKy60kJSZaqoWj+80L
 A3yJ1K7wgiwqzOw0VaHU56Y5awnD5cculciwHxrfc6OHnG9cotvCSxsU2qr/UMd2
 N/cPhUDKfWcilVoRNy+yYiubQsp2s4amF2uGDn/QjjZx0c3dgfXc9BCNmu9nbAMr
 UsmzZBH9GCpaTajVIsX8RdnaovMTxGr4UFyuSQ2jWYWp3k2BR89jkBpXReGGOYr6
 SuEOOnx/E1duTZUPq1gdSkQm9uGxxq5FSGIWR+rWMdFkZS09HStmq5hcY+Zx0pSg
 JzDaLgPATV65y0VswFVUj6NemmNU983DwKPACwVCpemeBETtVuoU/CydzEPPwiL6
 Kl5ISmjZz3I=
 =v2BI
 -----END PGP SIGNATURE-----

Merge tag 'for-upstream' of https://repo.or.cz/qemu/kevin into staging

Block layer patches

- Expose block limits in monitor and qemu-img info
- Resize: Refresh filter node size when its child was resized
- Support configuring stats-intervals in -device (instead of only -drive)
- luks: Fix QMP x-blockdev-amend crash and image creation with detached-header
- iotests: Several test case fixes
- Code cleanups

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCgAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAmkCAkIRHGt3b2xmQHJl
# ZGhhdC5jb20ACgkQfwmycsiPL9a3bA/+MMS9ocOyEiE4u66XbhQ4KgqxECtD/uzg
# 3lYQJbfVpphizq0QQn1pAno9rpjdWnkwPv9TasAEM/9R/wz/ygjmXM9GyQDvNLoB
# t6dTyWKpsi4lVB7FNPBNQvyz7mHqWQULrhI/mNGLsbiss32SMiE08amjOzSrFSZJ
# zn8TsEzDB218Bv8OBH/eI1mMvZ2gG6+yzPf7znA5nSOtJkG1kGLPInZuRgeN7e7W
# DUl5EeiP3sGZh4pF/IyRc8BNMsvPR7Lk31PrPEXAz+7g0y8dfPukrcR0nY6nwekT
# omPhbIBfDOEKpYdBxheOdh9TkT40Fo2Oc7DIhzY4at3O02BKy60kJSZaqoWj+80L
# A3yJ1K7wgiwqzOw0VaHU56Y5awnD5cculciwHxrfc6OHnG9cotvCSxsU2qr/UMd2
# N/cPhUDKfWcilVoRNy+yYiubQsp2s4amF2uGDn/QjjZx0c3dgfXc9BCNmu9nbAMr
# UsmzZBH9GCpaTajVIsX8RdnaovMTxGr4UFyuSQ2jWYWp3k2BR89jkBpXReGGOYr6
# SuEOOnx/E1duTZUPq1gdSkQm9uGxxq5FSGIWR+rWMdFkZS09HStmq5hcY+Zx0pSg
# JzDaLgPATV65y0VswFVUj6NemmNU983DwKPACwVCpemeBETtVuoU/CydzEPPwiL6
# Kl5ISmjZz3I=
# =v2BI
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 29 Oct 2025 01:02:10 PM CET
# gpg:                using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg:                issuer "kwolf@redhat.com"
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* tag 'for-upstream' of https://repo.or.cz/qemu/kevin:
  qemu-img info: Add cache mode option
  qemu-img info: Optionally show block limits
  block: Expose block limits for images in QMP
  block: Improve comments in BlockLimits
  iotests: add test for resizing a 'file' node below a 'raw' node
  iotests: add test for resizing a node below filters
  block: implement 'resize' callback for child_of_bds class
  block: make bdrv_co_parent_cb_resize() a proper IO API function
  include/block/block_int-common: document when resize callback is used
  MAINTAINERS: Mark VHDX block driver as "Odd Fixes"
  block: enable stats-intervals for storage devices
  iotests: Adjust fuse-allow-other expected output
  iotests: Adjust nbd expected outputs to match current behavior
  block/curl.c: Fix CURLOPT_VERBOSE parameter type
  block/monitor: Use hmp_handle_error to report error
  block: fix luks 'amend' when run in coroutine
  block: remove 'detached-header' option from opts after use
  tests/qemu-iotests: Mark the 'inactive-node-nbd' as unsupported with -luks

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2025-10-30 09:24:15 +01:00
commit 0979667049
32 changed files with 479 additions and 96 deletions

View file

@ -275,6 +275,69 @@
'file': 'ImageInfoSpecificFileWrapper'
} }
##
# @BlockLimitsInfo:
#
# @request-alignment: Alignment requirement, in bytes, for
# offset/length of I/O requests.
#
# @max-discard: Maximum number of bytes that can be discarded at once.
# If not present, there is no specific maximum.
#
# @discard-alignment: Optimal alignment for discard requests in bytes.
# Note that this doesn't have to be a power of two. If not
# present, discards don't have a alignment requirement different
# from @request-alignment.
#
# @max-write-zeroes: Maximum number of bytes that can be zeroed out at
# once. If not present, there is no specific maximum.
#
# @write-zeroes-alignment: Optimal alignment for write zeroes requests
# in bytes. Note that this doesn't have to be a power of two. If
# not present, write_zeroes doesn't have a alignment requirement
# different from @request-alignment.
#
# @opt-transfer: Optimal transfer length in bytes. If not present,
# there is no preferred size.
#
# @max-transfer: Maximal transfer length in bytes. If not present,
# there is no specific maximum.
#
# @max-hw-transfer: Maximal hardware transfer length in bytes.
# Applies whenever transfers to the device bypass the kernel I/O
# scheduler, for example with SG_IO. If not present, there is no
# specific maximum.
#
# @max-iov: Maximum number of scatter/gather elements
#
# @max-hw-iov: Maximum number of scatter/gather elements allowed by
# the hardware. Applies whenever transfers to the device bypass
# the kernel I/O scheduler, for example with SG_IO. If not
# present, the hardware limits is unknown and @max-iov is always
# used.
#
# @min-mem-alignment: Minimal required memory alignment in bytes for
# zero-copy I/O to succeed. For unaligned requests, a bounce
# buffer will be used.
#
# @opt-mem-alignment: Optimal memory alignment in bytes. This is the
# alignment used for any buffer allocations QEMU performs
# internally.
##
{ 'struct': 'BlockLimitsInfo',
'data': { 'request-alignment': 'uint32',
'*max-discard': 'uint64',
'*discard-alignment': 'uint32',
'*max-write-zeroes': 'uint64',
'*write-zeroes-alignment': 'uint32',
'*opt-transfer': 'uint32',
'*max-transfer': 'uint32',
'*max-hw-transfer': 'uint32',
'max-iov': 'int',
'*max-hw-iov': 'int',
'min-mem-alignment': 'size',
'opt-mem-alignment': 'size' } }
##
# @BlockNodeInfo:
#
@ -304,6 +367,8 @@
#
# @snapshots: list of VM snapshots
#
# @limits: block limits that are used for I/O on the node (Since 10.2)
#
# @format-specific: structure supplying additional format-specific
# information (since 1.7)
#
@ -315,6 +380,7 @@
'*cluster-size': 'int', '*encrypted': 'bool', '*compressed': 'bool',
'*backing-filename': 'str', '*full-backing-filename': 'str',
'*backing-filename-format': 'str', '*snapshots': ['SnapshotInfo'],
'*limits': 'BlockLimitsInfo',
'*format-specific': 'ImageInfoSpecific' } }
##