summaryrefslogtreecommitdiffstats
path: root/block/blk-throttle.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/blk-throttle.c')
-rw-r--r--block/blk-throttle.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 93841da808a1..d00c1c1e99e4 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -18,8 +18,9 @@ static int throtl_grp_quantum = 8;
18/* Total max dispatch from all groups in one round */ 18/* Total max dispatch from all groups in one round */
19static int throtl_quantum = 32; 19static int throtl_quantum = 32;
20 20
21/* Throttling is performed over 100ms slice and after that slice is renewed */ 21/* Throttling is performed over a slice and after that slice is renewed */
22#define DFL_THROTL_SLICE (HZ / 10) 22#define DFL_THROTL_SLICE_HD (HZ / 10)
23#define DFL_THROTL_SLICE_SSD (HZ / 50)
23#define MAX_THROTL_SLICE (HZ) 24#define MAX_THROTL_SLICE (HZ)
24 25
25static struct blkcg_policy blkcg_policy_throtl; 26static struct blkcg_policy blkcg_policy_throtl;
@@ -1961,7 +1962,6 @@ int blk_throtl_init(struct request_queue *q)
1961 1962
1962 q->td = td; 1963 q->td = td;
1963 td->queue = q; 1964 td->queue = q;
1964 td->throtl_slice = DFL_THROTL_SLICE;
1965 1965
1966 td->limit_valid[LIMIT_MAX] = true; 1966 td->limit_valid[LIMIT_MAX] = true;
1967 td->limit_index = LIMIT_MAX; 1967 td->limit_index = LIMIT_MAX;
@@ -1982,6 +1982,23 @@ void blk_throtl_exit(struct request_queue *q)
1982 kfree(q->td); 1982 kfree(q->td);
1983} 1983}
1984 1984
1985void blk_throtl_register_queue(struct request_queue *q)
1986{
1987 struct throtl_data *td;
1988
1989 td = q->td;
1990 BUG_ON(!td);
1991
1992 if (blk_queue_nonrot(q))
1993 td->throtl_slice = DFL_THROTL_SLICE_SSD;
1994 else
1995 td->throtl_slice = DFL_THROTL_SLICE_HD;
1996#ifndef CONFIG_BLK_DEV_THROTTLING_LOW
1997 /* if no low limit, use previous default */
1998 td->throtl_slice = DFL_THROTL_SLICE_HD;
1999#endif
2000}
2001
1985#ifdef CONFIG_BLK_DEV_THROTTLING_LOW 2002#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
1986ssize_t blk_throtl_sample_time_show(struct request_queue *q, char *page) 2003ssize_t blk_throtl_sample_time_show(struct request_queue *q, char *page)
1987{ 2004{