Skip to content

Commit 0c60458

Browse files
Jiri Pirkomstsirkin
authored andcommitted
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 <[email protected]> Signed-off-by: Jiri Pirko <[email protected]> Message-Id: <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent b49503e commit 0c60458

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

drivers/block/virtio_blk.c

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -964,8 +964,7 @@ static int init_vq(struct virtio_blk *vblk)
964964
{
965965
int err;
966966
unsigned short i;
967-
vq_callback_t **callbacks;
968-
const char **names;
967+
struct virtqueue_info *vqs_info;
969968
struct virtqueue **vqs;
970969
unsigned short num_vqs;
971970
unsigned short num_poll_vqs;
@@ -1002,28 +1001,26 @@ static int init_vq(struct virtio_blk *vblk)
10021001
if (!vblk->vqs)
10031002
return -ENOMEM;
10041003

1005-
names = kmalloc_array(num_vqs, sizeof(*names), GFP_KERNEL);
1006-
callbacks = kmalloc_array(num_vqs, sizeof(*callbacks), GFP_KERNEL);
1004+
vqs_info = kcalloc(num_vqs, sizeof(*vqs_info), GFP_KERNEL);
10071005
vqs = kmalloc_array(num_vqs, sizeof(*vqs), GFP_KERNEL);
1008-
if (!names || !callbacks || !vqs) {
1006+
if (!vqs_info || !vqs) {
10091007
err = -ENOMEM;
10101008
goto out;
10111009
}
10121010

10131011
for (i = 0; i < num_vqs - num_poll_vqs; i++) {
1014-
callbacks[i] = virtblk_done;
1012+
vqs_info[i].callback = virtblk_done;
10151013
snprintf(vblk->vqs[i].name, VQ_NAME_LEN, "req.%u", i);
1016-
names[i] = vblk->vqs[i].name;
1014+
vqs_info[i].name = vblk->vqs[i].name;
10171015
}
10181016

10191017
for (; i < num_vqs; i++) {
1020-
callbacks[i] = NULL;
10211018
snprintf(vblk->vqs[i].name, VQ_NAME_LEN, "req_poll.%u", i);
1022-
names[i] = vblk->vqs[i].name;
1019+
vqs_info[i].name = vblk->vqs[i].name;
10231020
}
10241021

10251022
/* Discover virtqueues and write information to configuration. */
1026-
err = virtio_find_vqs(vdev, num_vqs, vqs, callbacks, names, &desc);
1023+
err = virtio_find_vqs_info(vdev, num_vqs, vqs, vqs_info, &desc);
10271024
if (err)
10281025
goto out;
10291026

@@ -1035,8 +1032,7 @@ static int init_vq(struct virtio_blk *vblk)
10351032

10361033
out:
10371034
kfree(vqs);
1038-
kfree(callbacks);
1039-
kfree(names);
1035+
kfree(vqs_info);
10401036
if (err)
10411037
kfree(vblk->vqs);
10421038
return err;

0 commit comments

Comments
 (0)