Bart, On 6/22/21 4:27 PM, Bart Van Assche wrote: > On 6/22/21 4:19 PM, Chaitanya Kulkarni wrote: >> Instead of hardcoding queue depth allow user to set the hw queue depth >> using module parameter. Set default value to 128 to retain the existing >> behavior. >> >> Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx> >> --- >> drivers/block/loop.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/block/loop.c b/drivers/block/loop.c >> index 6fc3cfa87598..c0d54ffd6ef3 100644 >> --- a/drivers/block/loop.c >> +++ b/drivers/block/loop.c >> @@ -1942,6 +1942,9 @@ module_param(max_loop, int, 0444); >> MODULE_PARM_DESC(max_loop, "Maximum number of loop devices"); >> module_param(max_part, int, 0444); >> MODULE_PARM_DESC(max_part, "Maximum number of partitions per loop device"); >> +static int hw_queue_depth = 128; >> +module_param_named(hw_queue_depth, hw_queue_depth, int, 0444); >> +MODULE_PARM_DESC(hw_queue_depth, "Queue depth for each hardware queue. Default: 128"); >> MODULE_LICENSE("GPL"); >> MODULE_ALIAS_BLOCKDEV_MAJOR(LOOP_MAJOR); >> >> @@ -2094,7 +2097,7 @@ static int loop_add(struct loop_device **l, int i) >> err = -ENOMEM; >> lo->tag_set.ops = &loop_mq_ops; >> lo->tag_set.nr_hw_queues = 1; >> - lo->tag_set.queue_depth = 128; >> + lo->tag_set.queue_depth = hw_queue_depth; >> lo->tag_set.numa_node = NUMA_NO_NODE; >> lo->tag_set.cmd_size = sizeof(struct loop_cmd); >> lo->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_STACKING; > Is there any use case for which the performance improves by using > another queue depth than the default? Unfortunately I don't have access to all the applications so I can come up with quantitative data, I can try synthetic applications such as fio. This patch is more on the side of allowing user to change the qd value so they can experiment, making loop qd flexible like other block drivers which loop lacks right now. > Thanks, > > Bart. > > >