cfq-iosched: Do not idle if slice_idle=0
authorVivek Goyal <vgoyal@redhat.com>
Mon, 23 Aug 2010 10:23:33 +0000 (12:23 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Mon, 23 Aug 2010 10:23:33 +0000 (12:23 +0200)
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>
block/cfq-iosched.c

index eb4086f7dfef9eb7efc6d202fb7a979919a551b8..8830569542c4222c4113c9df87b6a21c776fbc8f 100644 (file)
@@ -1839,6 +1839,9 @@ static bool cfq_should_idle(struct cfq_data *cfqd, struct cfq_queue *cfqq)
        BUG_ON(!service_tree);
        BUG_ON(!service_tree->count);
 
+       if (!cfqd->cfq_slice_idle)
+               return false;
+
        /* We never do for idle class queues. */
        if (prio == IDLE_WORKLOAD)
                return false;
@@ -1879,7 +1882,7 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd)
        /*
         * idle is disabled, either manually or by past process history
         */
-       if (!cfqd->cfq_slice_idle || !cfq_should_idle(cfqd, cfqq))
+       if (!cfq_should_idle(cfqd, cfqq))
                return;
 
        /*