Commit f2a48042 authored by Shuai Wu's avatar Shuai Wu
Browse files

virtio-fs: limit number of request queues

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/?id=103c2de111bf32f7c36a0ce8f638b114a37e0b76



-------------------------------------------------

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: default avatarPeter-Jan Gootzen <pgootzen@nvidia.com>
Signed-off-by: default avatarYoray Zack <yorayz@nvidia.com>
Suggested-by: default avatarMax Gurtovoy <mgurtovoy@nvidia.com>
Reviewed-by: default avatarMax Gurtovoy <mgurtovoy@nvidia.com>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
Signed-off-by: default avatarShuai Wu <wushuai51@huawei.com>
parent a5eac4b9
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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)