|
@@ -49,13 +49,11 @@ static const VirtIOFeature feature_sizes[] = {
|
|
{}
|
|
{}
|
|
};
|
|
};
|
|
|
|
|
|
-static void virtio_blk_set_config_size(VirtIOBlock *s, uint64_t host_features)
|
|
|
|
-{
|
|
|
|
- s->config_size = MAX(VIRTIO_BLK_CFG_SIZE,
|
|
|
|
- virtio_feature_get_config_size(feature_sizes, host_features));
|
|
|
|
-
|
|
|
|
- assert(s->config_size <= sizeof(struct virtio_blk_config));
|
|
|
|
-}
|
|
|
|
|
|
+static const VirtIOConfigSizeParams cfg_size_params = {
|
|
|
|
+ .min_size = VIRTIO_BLK_CFG_SIZE,
|
|
|
|
+ .max_size = sizeof(struct virtio_blk_config),
|
|
|
|
+ .feature_sizes = feature_sizes
|
|
|
|
+};
|
|
|
|
|
|
static void virtio_blk_init_request(VirtIOBlock *s, VirtQueue *vq,
|
|
static void virtio_blk_init_request(VirtIOBlock *s, VirtQueue *vq,
|
|
VirtIOBlockReq *req)
|
|
VirtIOBlockReq *req)
|
|
@@ -1204,8 +1202,8 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- virtio_blk_set_config_size(s, s->host_features);
|
|
|
|
-
|
|
|
|
|
|
+ s->config_size = virtio_get_config_size(&cfg_size_params,
|
|
|
|
+ s->host_features);
|
|
virtio_init(vdev, VIRTIO_ID_BLOCK, s->config_size);
|
|
virtio_init(vdev, VIRTIO_ID_BLOCK, s->config_size);
|
|
|
|
|
|
s->blk = conf->conf.blk;
|
|
s->blk = conf->conf.blk;
|