[BLOCK] elevator: run queue in elevator_switch
authorTejun Heo <htejun@gmail.com>
Thu, 10 Nov 2005 07:48:21 +0000 (08:48 +0100)
committerJens Axboe <axboe@nelson.home.kernel.dk>
Sat, 12 Nov 2005 09:55:37 +0000 (10:55 +0100)
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>
block/elevator.c

index e58928e809ea2094eaea19d32f31d2a0629f0792..a475b1a19f670b37f65085f7e413f1e817303511 100644 (file)
@@ -696,6 +696,8 @@ static void elevator_switch(request_queue_t *q, struct elevator_type *new_e)
                ;
 
        while (q->rq.elvpriv) {
+               blk_remove_plug(q);
+               q->request_fn(q);
                spin_unlock_irq(q->queue_lock);
                msleep(10);
                spin_lock_irq(q->queue_lock);