mirror of
https://github.com/torvalds/linux.git
synced 2024-10-23 05:30:55 +00:00
virtio_blk: convert to use virtio_find_vqs_info()
Instead of passing separate names and callbacks arrays to virtio_find_vqs(), allocate one of virtual_queue_info structs and pass it to virtio_find_vqs_info(). Suggested-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Signed-off-by: Jiri Pirko <jiri@nvidia.com> Message-Id: <20240708074814.1739223-11-jiri@resnulli.us> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
b49503eaf9
commit
0c60458b18
|
@ -964,8 +964,7 @@ static int init_vq(struct virtio_blk *vblk)
|
|||
{
|
||||
int err;
|
||||
unsigned short i;
|
||||
vq_callback_t **callbacks;
|
||||
const char **names;
|
||||
struct virtqueue_info *vqs_info;
|
||||
struct virtqueue **vqs;
|
||||
unsigned short num_vqs;
|
||||
unsigned short num_poll_vqs;
|
||||
|
@ -1002,28 +1001,26 @@ static int init_vq(struct virtio_blk *vblk)
|
|||
if (!vblk->vqs)
|
||||
return -ENOMEM;
|
||||
|
||||
names = kmalloc_array(num_vqs, sizeof(*names), GFP_KERNEL);
|
||||
callbacks = kmalloc_array(num_vqs, sizeof(*callbacks), GFP_KERNEL);
|
||||
vqs_info = kcalloc(num_vqs, sizeof(*vqs_info), GFP_KERNEL);
|
||||
vqs = kmalloc_array(num_vqs, sizeof(*vqs), GFP_KERNEL);
|
||||
if (!names || !callbacks || !vqs) {
|
||||
if (!vqs_info || !vqs) {
|
||||
err = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (i = 0; i < num_vqs - num_poll_vqs; i++) {
|
||||
callbacks[i] = virtblk_done;
|
||||
vqs_info[i].callback = virtblk_done;
|
||||
snprintf(vblk->vqs[i].name, VQ_NAME_LEN, "req.%u", i);
|
||||
names[i] = vblk->vqs[i].name;
|
||||
vqs_info[i].name = vblk->vqs[i].name;
|
||||
}
|
||||
|
||||
for (; i < num_vqs; i++) {
|
||||
callbacks[i] = NULL;
|
||||
snprintf(vblk->vqs[i].name, VQ_NAME_LEN, "req_poll.%u", i);
|
||||
names[i] = vblk->vqs[i].name;
|
||||
vqs_info[i].name = vblk->vqs[i].name;
|
||||
}
|
||||
|
||||
/* Discover virtqueues and write information to configuration. */
|
||||
err = virtio_find_vqs(vdev, num_vqs, vqs, callbacks, names, &desc);
|
||||
err = virtio_find_vqs_info(vdev, num_vqs, vqs, vqs_info, &desc);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
|
@ -1035,8 +1032,7 @@ static int init_vq(struct virtio_blk *vblk)
|
|||
|
||||
out:
|
||||
kfree(vqs);
|
||||
kfree(callbacks);
|
||||
kfree(names);
|
||||
kfree(vqs_info);
|
||||
if (err)
|
||||
kfree(vblk->vqs);
|
||||
return err;
|
||||
|
|
Loading…
Reference in New Issue
Block a user