[PATCH 2/2] block/mq-deadline: add module parameter for prio_aging_expire default
Ye Bin <[email protected]>
| Newsgroups | org.kernel.vger.linux-block |
|---|---|
| Message-ID | <[email protected]> |
From: Ye Bin <[email protected]> Allow the default value of prio_aging_expire to be overridden at load time, in milliseconds to match the sysfs attribute: - built-in: mq_deadline.prio_aging_expire=0 on the kernel command line - module: modprobe mq_deadline prio_aging_expire=0 A value of zero disables I/O priority from boot/load: every request is filed in the best-effort bucket and the priority aging path is bypassed, so systems that do not want RT/BE/IDLE distinction can opt out without writing to sysfs after every queue creation. Previously prio_aging_expire was a compile-time constant (10 * HZ) with no way to change the default before the first request queue was initialized. Make the variable a module_param so that the override works whether mq-deadline is built-in or compiled as a module, and convert the millisecond value to jiffies in dd_init_sched() when assigning the per-queue default. Signed-off-by: Ye Bin <[email protected]> --- block/mq-deadline.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/block/mq-deadline.c b/block/mq-deadline.c index e3314f7aed8b..95a00a673be5 100644 --- a/block/mq-deadline.c +++ b/block/mq-deadline.c @@ -33,7 +33,10 @@ static const int write_expire = 5 * HZ; /* ditto for writes, these limits are SO * Time after which to dispatch lower priority requests even if higher * priority requests are pending. */ -static const int prio_aging_expire = 10 * HZ; +static int prio_aging_expire = 10 * MSEC_PER_SEC; +module_param(prio_aging_expire, int, 0644); +MODULE_PARM_DESC(prio_aging_expire, + "Default prio_aging_expire in milliseconds; 0 disables I/O priority."); static const int writes_starved = 2; /* max times reads can starve a write */ static const int fifo_batch = 16; /* # of sequential requests treated as one by the above parameters. For throughput. */ @@ -559,7 +562,7 @@ static int dd_init_sched(struct request_queue *q, struct elevator_queue *eq) dd->front_merges = 1; dd->last_dir = DD_WRITE; dd->fifo_batch = fifo_batch; - dd->prio_aging_expire = prio_aging_expire; + dd->prio_aging_expire = msecs_to_jiffies(prio_aging_expire); spin_lock_init(&dd->lock); /* We dispatch from request queue wide instead of hw queue */ -- 2.34.1