@@ -26,8 +26,26 @@
#endif
static VirtIOFeature feature_sizes[] = {
- {.flags = 0xffffffff, /* dummy table -- all features included */
- .end = sizeof(struct virtio_blk_config)},
+ {.flags = 1 << VIRTIO_BLK_F_BARRIER,
+ .end = endof(struct virtio_blk_config, sectors)},
+ {.flags = 1 << VIRTIO_BLK_F_SIZE_MAX,
+ .end = endof(struct virtio_blk_config, sectors)},
+ {.flags = 1 << VIRTIO_BLK_F_SEG_MAX,
+ .end = endof(struct virtio_blk_config, sectors)},
+ {.flags = 1 << VIRTIO_BLK_F_GEOMETRY,
+ .end = endof(struct virtio_blk_config, sectors)},
+ {.flags = 1 << VIRTIO_BLK_F_RO,
+ .end = endof(struct virtio_blk_config, sectors)},
+ {.flags = 1 << VIRTIO_BLK_F_BLK_SIZE,
+ .end = endof(struct virtio_blk_config, sectors)},
+ {.flags = 1 << VIRTIO_BLK_F_SCSI,
+ .end = endof(struct virtio_blk_config, sectors)},
+ {.flags = 1 << VIRTIO_BLK_F_WCE,
+ .end = endof(struct virtio_blk_config, blk_size)},
+ {.flags = 1 << VIRTIO_BLK_F_TOPOLOGY,
+ .end = endof(struct virtio_blk_config, opt_io_size)},
+ {.flags = 1 << VIRTIO_BLK_F_CONFIG_WCE,
+ .end = endof(struct virtio_blk_config, wce)},
{}
};
Fill in the feature table with the last field of struct virtio_blk_config at the time that the feature flag was introduced. The table was constructed by searching through the git history. Signed-off-by: Jesse Larrew <jlarrew@linux.vnet.ibm.com> --- hw/virtio-blk.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-)