From: Tejun Heo Date: Thu, 16 Jun 2005 10:57:31 +0000 (+0200) Subject: This patch fixes q->unplug_thresh condition check in X-Git-Tag: v2.6.12~6^2 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=c374f127e4ff17a318b9ae95a5bf65f370c2d0b1;p=linux-2.6-omap-h63xx.git This patch fixes q->unplug_thresh condition check in __elv_add_request(). rq.count[READ] + rq.count[WRITE] can increase more than one if another thread has allocated a request after the current request is allocated or in_flight could have changed resulting in larger-than-one change of nrq, thus breaking the threshold mechanism. Signed-off-by: Jens Axboe Signed-off-by: Tejun Heo --- diff --git a/drivers/block/elevator.c b/drivers/block/elevator.c index 98fcabbafe1..89982925f9e 100644 --- a/drivers/block/elevator.c +++ b/drivers/block/elevator.c @@ -317,7 +317,7 @@ void __elv_add_request(request_queue_t *q, struct request *rq, int where, int nrq = q->rq.count[READ] + q->rq.count[WRITE] - q->in_flight; - if (nrq == q->unplug_thresh) + if (nrq >= q->unplug_thresh) __generic_unplug_device(q); } } else