mbox series

[v7,0/8] block: enhance handling of size-related BlockConf properties

Message ID 20200528213946.1636444-1-rvkagan@yandex-team.ru (mailing list archive)
Headers show
Series block: enhance handling of size-related BlockConf properties | expand

Message

Roman Kagan May 28, 2020, 9:39 p.m. UTC
BlockConf includes several properties counted in bytes.

Enhance their handling in some aspects, specifically

- accept common size suffixes (k, m)
- perform consistency checks on the values
- lift the upper limit on physical_block_size and logical_block_size

Also fix the accessor for opt_io_size in virtio-blk to make it consistent with
the size of the field.

History:
v6 -> v7:
- avoid overflow in min_io_size check [Eric]
- try again to perform the art form in patch splitting [Eric]

v5 -> v6:
- fix forgotten xen-block and swim
- add prop_size32 instead of going with 64bit

v4 -> v5:
- re-split the patches [Philippe]
- fix/reword error messages [Philippe, Kevin]
- do early return on failed consistency check [Philippe]
- use QEMU_IS_ALIGNED instead of open coding [Philippe]
- make all BlockConf size props support suffixes
- expand the log for virtio-blk opt_io_size [Michael]

v3 -> v4:
- add patch to fix opt_io_size width in virtio-blk
- add patch to perform consistency checks [Kevin]
- check min_io_size against truncation [Kevin]

v2 -> v3:
- mention qcow2 cluster size limit in the log and comment [Eric]

v1 -> v2:
- cap the property at 2 MiB [Eric]
- accept size suffixes

Roman Kagan (8):
  virtio-blk: store opt_io_size with correct size
  block: consolidate blocksize properties consistency checks
  qdev-properties: blocksize: use same limits in code and description
  qdev-properties: add size32 property type
  qdev-properties: make blocksize accept size suffixes
  block: make BlockConf size props 32bit and accept size suffixes
  qdev-properties: add getter for size32 and blocksize
  block: lift blocksize property limit to 2 MiB

 include/hw/block/block.h     |  14 +-
 include/hw/qdev-properties.h |   5 +-
 hw/block/block.c             |  41 ++-
 hw/block/fdc.c               |   5 +-
 hw/block/nvme.c              |   5 +-
 hw/block/swim.c              |   5 +-
 hw/block/virtio-blk.c        |   9 +-
 hw/block/xen-block.c         |   6 +-
 hw/core/qdev-properties.c    |  85 +++++-
 hw/ide/qdev.c                |   5 +-
 hw/scsi/scsi-disk.c          |  12 +-
 hw/usb/dev-storage.c         |   5 +-
 tests/qemu-iotests/172.out   | 532 +++++++++++++++++------------------
 13 files changed, 420 insertions(+), 309 deletions(-)