On 2021/1/18 ??11:58, Joseph Qi wrote:> module parameter 'virtblk_queue_depth' was firstly introduced for
> testing/benchmarking purposes described in commit fc4324b4597c
> ("virtio-blk: base queue-depth on virtqueue ringsize or module
param").
> Since we have different virtio-blk devices which have different
> capabilities, it requires that we support per-device queue depth instead
> of per-module. So defaultly use vq free elements if module parameter
> 'virtblk_queue_depth' is not set.
>
> Signed-off-by: Joseph Qi <joseph.qi at linux.alibaba.com>
Acked-by: Jason Wang <jasowang at redhat.com>
> ---
> drivers/block/virtio_blk.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index 145606d..f83a417 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -705,6 +705,7 @@ static int virtblk_probe(struct virtio_device *vdev)
> u32 v, blk_size, max_size, sg_elems, opt_io_size;
> u16 min_io_size;
> u8 physical_block_exp, alignment_offset;
> + unsigned int queue_depth;
>
> if (!vdev->config->get) {
> dev_err(&vdev->dev, "%s failure: config access
disabled\n",
> @@ -755,17 +756,18 @@ static int virtblk_probe(struct virtio_device *vdev)
> goto out_free_vq;
> }
>
> - /* Default queue sizing is to fill the ring. */
> - if (!virtblk_queue_depth) {
> - virtblk_queue_depth = vblk->vqs[0].vq->num_free;
> + if (likely(!virtblk_queue_depth)) {
> + queue_depth = vblk->vqs[0].vq->num_free;
> /* ... but without indirect descs, we use 2 descs per req */
> if (!virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC))
> - virtblk_queue_depth /= 2;
> + queue_depth /= 2;
> + } else {
> + queue_depth = virtblk_queue_depth;
> }
>
> memset(&vblk->tag_set, 0, sizeof(vblk->tag_set));
> vblk->tag_set.ops = &virtio_mq_ops;
> - vblk->tag_set.queue_depth = virtblk_queue_depth;
> + vblk->tag_set.queue_depth = queue_depth;
> vblk->tag_set.numa_node = NUMA_NO_NODE;
> vblk->tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
> vblk->tag_set.cmd_size =