[commits] [git] batman-adv branch, linux, updated. 5ff6d9f73e1a8751740bc537732d05a99dfbc01b

postmaster at open-mesh.net postmaster at open-mesh.net
Mon Nov 9 02:01:21 UTC 2009


The following commit has been merged in the linux branch:
commit 355b659c87432a4e76160640625c47fcf9174e8d
Author: Corrado Zoccolo <czoccolo at gmail.com>
Date:   Thu Oct 8 08:43:32 2009 +0200

    cfq-iosched: avoid probable slice overrun when idling
    
    If the average think time is larger than the remaining time slice
    for any given queue, don't allow it to idle. A succesful idle also
    means that we need to dispatch and complete a request, so if we don't
    even have time left for the idle process, we would overrun the slice
    in any case.
    
    Signed-off-by: Corrado Zoccolo <czoccolo at gmail.com>
    Signed-off-by: Jens Axboe <jens.axboe at oracle.com>

diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index a592afc..069a610 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1093,6 +1093,15 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd)
 	if (!cic || !atomic_read(&cic->ioc->nr_tasks))
 		return;
 
+	/*
+	 * If our average think time is larger than the remaining time
+	 * slice, then don't idle. This avoids overrunning the allotted
+	 * time slice.
+	 */
+	if (sample_valid(cic->ttime_samples) &&
+	    (cfqq->slice_end - jiffies < cic->ttime_mean))
+		return;
+
 	cfq_mark_cfqq_wait_request(cfqq);
 
 	/*

-- 
batman-adv


More information about the commits mailing list