This patch set attempts to align vhost-user-blk with virtio-blk in terms of backward compatibility and flexibility. It also improves the virtio core by introducing new common code that can be used by a virtio device to calculate its config space size.
In particular it adds the following things: - Common virtio code for deducing the required device config size based on provided host features. - Ability to disable modern virtio-blk features like discard/write-zeroes for vhost-user-blk. - Dynamic configuration space resizing based on enabled features, by reusing the common code introduced in the earlier commits. - Cleans up the VHostUserBlk structure by reusing parent fields. Changes since v1 (mostly addresses Stefan's feedback): - Introduce VirtIOConfigSizeParams & virtio_get_config_size - Remove virtio_blk_set_config_size altogether, make virtio-blk-common.c only hold the virtio-blk config size parameters. - Reuse parent fields in vhost-user-blk instead of introducing new ones. Daniil Tatianin (8): virtio: introduce VirtIOConfigSizeParams & virtio_get_config_size virtio-blk: utilize VirtIOConfigSizeParams & virtio_get_config_size virtio-net: utilize VirtIOConfigSizeParams & virtio_get_config_size virtio: remove the virtio_feature_get_config_size helper virtio-blk: move config size params to virtio-blk-common vhost-user-blk: make it possible to disable write-zeroes/discard vhost-user-blk: make 'config_wce' part of 'host_features' vhost-user-blk: dynamically resize config space based on features MAINTAINERS | 4 +++ hw/block/meson.build | 4 +-- hw/block/vhost-user-blk.c | 29 +++++++++++--------- hw/block/virtio-blk-common.c | 39 +++++++++++++++++++++++++++ hw/block/virtio-blk.c | 28 +++---------------- hw/net/virtio-net.c | 8 ++++-- hw/virtio/virtio.c | 10 ++++--- include/hw/virtio/vhost-user-blk.h | 1 - include/hw/virtio/virtio-blk-common.h | 20 ++++++++++++++ include/hw/virtio/virtio.h | 10 +++++-- 10 files changed, 104 insertions(+), 49 deletions(-) create mode 100644 hw/block/virtio-blk-common.c create mode 100644 include/hw/virtio/virtio-blk-common.h -- 2.25.1