@@ -789,14 +789,13 @@ static void virtio_fs_init_vq(struct virtio_fs_vq *fsvq, char *name,
789
789
static int virtio_fs_setup_vqs (struct virtio_device * vdev ,
790
790
struct virtio_fs * fs )
791
791
{
792
+ struct virtqueue_info * vqs_info ;
792
793
struct virtqueue * * vqs ;
793
- vq_callback_t * * callbacks ;
794
794
/* Specify pre_vectors to ensure that the queues before the
795
795
* request queues (e.g. hiprio) don't claim any of the CPUs in
796
796
* the multi-queue mapping and interrupt affinities
797
797
*/
798
798
struct irq_affinity desc = { .pre_vectors = VQ_REQUEST };
799
- const char * * names ;
800
799
unsigned int i ;
801
800
int ret = 0 ;
802
801
@@ -814,32 +813,30 @@ static int virtio_fs_setup_vqs(struct virtio_device *vdev,
814
813
return - ENOMEM ;
815
814
816
815
vqs = kmalloc_array (fs -> nvqs , sizeof (vqs [VQ_HIPRIO ]), GFP_KERNEL );
817
- callbacks = kmalloc_array (fs -> nvqs , sizeof (callbacks [VQ_HIPRIO ]),
818
- GFP_KERNEL );
819
- names = kmalloc_array (fs -> nvqs , sizeof (names [VQ_HIPRIO ]), GFP_KERNEL );
820
816
fs -> mq_map = kcalloc_node (nr_cpu_ids , sizeof (* fs -> mq_map ), GFP_KERNEL ,
821
817
dev_to_node (& vdev -> dev ));
822
- if (!vqs || !callbacks || !names || !fs -> mq_map ) {
818
+ vqs_info = kcalloc (fs -> nvqs , sizeof (* vqs_info ), GFP_KERNEL );
819
+ if (!vqs || !vqs_info || !fs -> mq_map ) {
823
820
ret = - ENOMEM ;
824
821
goto out ;
825
822
}
826
823
827
824
/* Initialize the hiprio/forget request virtqueue */
828
- callbacks [VQ_HIPRIO ] = virtio_fs_vq_done ;
825
+ vqs_info [VQ_HIPRIO ]. callback = virtio_fs_vq_done ;
829
826
virtio_fs_init_vq (& fs -> vqs [VQ_HIPRIO ], "hiprio" , VQ_HIPRIO );
830
- names [VQ_HIPRIO ] = fs -> vqs [VQ_HIPRIO ].name ;
827
+ vqs_info [VQ_HIPRIO ]. name = fs -> vqs [VQ_HIPRIO ].name ;
831
828
832
829
/* Initialize the requests virtqueues */
833
830
for (i = VQ_REQUEST ; i < fs -> nvqs ; i ++ ) {
834
831
char vq_name [VQ_NAME_LEN ];
835
832
836
833
snprintf (vq_name , VQ_NAME_LEN , "requests.%u" , i - VQ_REQUEST );
837
834
virtio_fs_init_vq (& fs -> vqs [i ], vq_name , VQ_REQUEST );
838
- callbacks [i ] = virtio_fs_vq_done ;
839
- names [i ] = fs -> vqs [i ].name ;
835
+ vqs_info [i ]. callback = virtio_fs_vq_done ;
836
+ vqs_info [i ]. name = fs -> vqs [i ].name ;
840
837
}
841
838
842
- ret = virtio_find_vqs (vdev , fs -> nvqs , vqs , callbacks , names , & desc );
839
+ ret = virtio_find_vqs_info (vdev , fs -> nvqs , vqs , vqs_info , & desc );
843
840
if (ret < 0 )
844
841
goto out ;
845
842
@@ -848,8 +845,7 @@ static int virtio_fs_setup_vqs(struct virtio_device *vdev,
848
845
849
846
virtio_fs_start_all_queues (fs );
850
847
out :
851
- kfree (names );
852
- kfree (callbacks );
848
+ kfree (vqs_info );
853
849
kfree (vqs );
854
850
if (ret ) {
855
851
kfree (fs -> vqs );
0 commit comments