aboutsummaryrefslogtreecommitdiffstats
path: root/block/blk-wbt.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2017-04-19 05:33:27 -0400
committerJens Axboe <axboe@fb.com>2017-04-19 10:49:03 -0400
commit8330cdb0fe55c9a9a8e440e56c19233229e0e259 (patch)
tree644af58ba64f8cb431d01abaff81113b4ed6a835 /block/blk-wbt.c
parentea25da48086d3bbebf3a2eeff387ea00ed96f5c4 (diff)
block: Make writeback throttling defaults consistent for SQ devices
When CFQ is used as an elevator, it disables writeback throttling because they don't play well together. Later when a different elevator is chosen for the device, writeback throttling doesn't get enabled again as it should. Make sure CFQ enables writeback throttling (if it should be enabled by default) when we switch from it to another IO scheduler. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-wbt.c')
-rw-r--r--block/blk-wbt.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/block/blk-wbt.c b/block/blk-wbt.c
index b3b79149d3a0..26e1bb617877 100644
--- a/block/blk-wbt.c
+++ b/block/blk-wbt.c
@@ -665,6 +665,25 @@ void wbt_disable_default(struct request_queue *q)
665} 665}
666EXPORT_SYMBOL_GPL(wbt_disable_default); 666EXPORT_SYMBOL_GPL(wbt_disable_default);
667 667
668/*
669 * Enable wbt if defaults are configured that way
670 */
671void wbt_enable_default(struct request_queue *q)
672{
673 /* Throttling already enabled? */
674 if (q->rq_wb)
675 return;
676
677 /* Queue not registered? Maybe shutting down... */
678 if (!test_bit(QUEUE_FLAG_REGISTERED, &q->queue_flags))
679 return;
680
681 if ((q->mq_ops && IS_ENABLED(CONFIG_BLK_WBT_MQ)) ||
682 (q->request_fn && IS_ENABLED(CONFIG_BLK_WBT_SQ)))
683 wbt_init(q);
684}
685EXPORT_SYMBOL_GPL(wbt_enable_default);
686
668u64 wbt_default_latency_nsec(struct request_queue *q) 687u64 wbt_default_latency_nsec(struct request_queue *q)
669{ 688{
670 /* 689 /*