diff options
Diffstat (limited to 'block/blk-throttle.c')
-rw-r--r-- | block/blk-throttle.c | 23 |
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 */ |
19 | static int throtl_quantum = 32; | 19 | static 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 | ||
25 | static struct blkcg_policy blkcg_policy_throtl; | 26 | static 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 | ||
1985 | void 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 |
1986 | ssize_t blk_throtl_sample_time_show(struct request_queue *q, char *page) | 2003 | ssize_t blk_throtl_sample_time_show(struct request_queue *q, char *page) |
1987 | { | 2004 | { |