mainline inclusion from mainline-v6.10 commit 103c2de111bf32f7c36a0ce8f638b114a37e0b76 category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/IB81UH
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i...
-------------------------------------------------
Virtio-fs devices might allocate significant resources to virtio queues such as CPU cores that busy poll on the queue. The device indicates how many request queues it can support and the driver should initialize the number of queues that they want to utilize.
In this patch we limit the number of initialized request queues to the number of CPUs, to limit the resource consumption on the device-side and to prepare for the upcoming multi-queue patch.
Signed-off-by: Peter-Jan Gootzen pgootzen@nvidia.com Signed-off-by: Yoray Zack yorayz@nvidia.com Suggested-by: Max Gurtovoy mgurtovoy@nvidia.com Reviewed-by: Max Gurtovoy mgurtovoy@nvidia.com Reviewed-by: Stefan Hajnoczi stefanha@redhat.com Acked-by: Michael S. Tsirkin mst@redhat.com Signed-off-by: Miklos Szeredi mszeredi@redhat.com Signed-off-by: Shuai Wu wushuai51@huawei.com --- fs/fuse/virtio_fs.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c index 5083e3f8f..eb5581325 100644 --- a/fs/fuse/virtio_fs.c +++ b/fs/fuse/virtio_fs.c @@ -750,6 +750,9 @@ static int virtio_fs_setup_vqs(struct virtio_device *vdev, if (fs->num_request_queues == 0) return -EINVAL;
+ /* Truncate nr of request queues to nr_cpu_id */ + fs->num_request_queues = min_t(unsigned int, fs->num_request_queues, + nr_cpu_ids); fs->nvqs = VQ_REQUEST + fs->num_request_queues; fs->vqs = kcalloc(fs->nvqs, sizeof(fs->vqs[VQ_HIPRIO]), GFP_KERNEL); if (!fs->vqs)