aboutsummaryrefslogtreecommitdiffstats
path: root/block/elevator.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2005-11-10 02:48:21 -0500
committerJens Axboe <axboe@nelson.home.kernel.dk>2005-11-12 04:55:37 -0500
commit407df2aa29a33fe16f6ee4bac8cdfa414783b9f1 (patch)
tree137e536d79e9fc777adc8c5bde842fea8b53d88a /block/elevator.c
parent47a004103d663bbba8c7c433a710a86f44351cf3 (diff)
[BLOCK] elevator: run queue in elevator_switch
elevator_dispatch needs to run queue after forced dispatching; otherwise, the queue might stall. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'block/elevator.c')
-rw-r--r--block/elevator.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/block/elevator.c b/block/elevator.c
index e58928e809ea..a475b1a19f67 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -696,6 +696,8 @@ static void elevator_switch(request_queue_t *q, struct elevator_type *new_e)
696 ; 696 ;
697 697
698 while (q->rq.elvpriv) { 698 while (q->rq.elvpriv) {
699 blk_remove_plug(q);
700 q->request_fn(q);
699 spin_unlock_irq(q->queue_lock); 701 spin_unlock_irq(q->queue_lock);
700 msleep(10); 702 msleep(10);
701 spin_lock_irq(q->queue_lock); 703 spin_lock_irq(q->queue_lock);