diff options
author | Tejun Heo <htejun@gmail.com> | 2005-11-10 02:48:21 -0500 |
---|---|---|
committer | Jens Axboe <axboe@nelson.home.kernel.dk> | 2005-11-12 04:55:37 -0500 |
commit | 407df2aa29a33fe16f6ee4bac8cdfa414783b9f1 (patch) | |
tree | 137e536d79e9fc777adc8c5bde842fea8b53d88a /block/elevator.c | |
parent | 47a004103d663bbba8c7c433a710a86f44351cf3 (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.c | 2 |
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); |