aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorVivek Goyal <vgoyal@redhat.com>2010-08-23 06:23:33 -0400
committerJens Axboe <jaxboe@fusionio.com>2010-08-23 06:23:33 -0400
commitb6508c1618e7aab085f191efb41b7b019a94ea38 (patch)
tree9568819705ebbdc3f4bca2d3d0290fe1a0773085 /block
parent75230ff2751e88d594a13a70eae2c146f45e323b (diff)
cfq-iosched: Do not idle if slice_idle=0
Do not idle either on cfq queue or service tree if slice_idle=0. User does not want any queue or service tree idling. Currently even if slice_idle=0, we were waiting for request to finish before expiring the queue and that can lead to lower queue depths. Acked-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'block')
-rw-r--r--block/cfq-iosched.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index eb4086f7dfe..8830569542c 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1839,6 +1839,9 @@ static bool cfq_should_idle(struct cfq_data *cfqd, struct cfq_queue *cfqq)
1839 BUG_ON(!service_tree); 1839 BUG_ON(!service_tree);
1840 BUG_ON(!service_tree->count); 1840 BUG_ON(!service_tree->count);
1841 1841
1842 if (!cfqd->cfq_slice_idle)
1843 return false;
1844
1842 /* We never do for idle class queues. */ 1845 /* We never do for idle class queues. */
1843 if (prio == IDLE_WORKLOAD) 1846 if (prio == IDLE_WORKLOAD)
1844 return false; 1847 return false;
@@ -1879,7 +1882,7 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd)
1879 /* 1882 /*
1880 * idle is disabled, either manually or by past process history 1883 * idle is disabled, either manually or by past process history
1881 */ 1884 */
1882 if (!cfqd->cfq_slice_idle || !cfq_should_idle(cfqd, cfqq)) 1885 if (!cfq_should_idle(cfqd, cfqq))
1883 return; 1886 return;
1884 1887
1885 /* 1888 /*