From: Ken Chen Date: Sat, 16 Apr 2005 22:25:43 +0000 (-0700) Subject: [PATCH] use cheaper elv_queue_empty when unplug a device X-Git-Tag: v2.6.12-rc3~117 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=a299738283a654544c75167d190d9e87b77e5fb7;p=~emulex%2Finfiniband.git [PATCH] use cheaper elv_queue_empty when unplug a device In function __generic_unplug_device(), kernel can use a cheaper function elv_queue_empty() instead of more expensive elv_next_request to find whether the queue is empty or not. blk_run_queue can also made conditional on whether queue's emptiness before calling request_fn(). Signed-off-by: Jens Axboe Signed-off-by: Ken Chen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c index 2d6934a0286..46e54b44166 100644 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c @@ -1589,7 +1589,8 @@ void blk_run_queue(struct request_queue *q) spin_lock_irqsave(q->queue_lock, flags); blk_remove_plug(q); - q->request_fn(q); + if (!elv_queue_empty(q)) + q->request_fn(q); spin_unlock_irqrestore(q->queue_lock, flags); } EXPORT_SYMBOL(blk_run_queue);