[BLOCK] elevator switch fixes/cleanup
- 100msec sleep is a little excessive, lots of requests can complete
in that timeframe. Use 10msec instead.
- Rename QUEUE_FLAG_BYPASS to QUEUE_FLAG_ELVSWITCH to indicate what
is going on.
Signed-off-by: Jens Axboe <axboe@suse.de>
diff --git a/drivers/block/elevator.c b/drivers/block/elevator.c
index 272d939..cf9bedb 100644
--- a/drivers/block/elevator.c
+++ b/drivers/block/elevator.c
@@ -671,14 +671,14 @@
*/
spin_lock_irq(q->queue_lock);
- set_bit(QUEUE_FLAG_BYPASS, &q->queue_flags);
+ set_bit(QUEUE_FLAG_ELVSWITCH, &q->queue_flags);
while (q->elevator->ops->elevator_dispatch_fn(q, 1))
;
while (q->rq.elvpriv) {
spin_unlock_irq(q->queue_lock);
- msleep(100);
+ msleep(10);
spin_lock_irq(q->queue_lock);
}
@@ -703,7 +703,7 @@
* finally exit old elevator and turn off BYPASS.
*/
elevator_exit(old_elevator);
- clear_bit(QUEUE_FLAG_BYPASS, &q->queue_flags);
+ clear_bit(QUEUE_FLAG_ELVSWITCH, &q->queue_flags);
return;
fail_register:
@@ -716,7 +716,7 @@
fail:
q->elevator = old_elevator;
elv_register_queue(q);
- clear_bit(QUEUE_FLAG_BYPASS, &q->queue_flags);
+ clear_bit(QUEUE_FLAG_ELVSWITCH, &q->queue_flags);
kfree(e);
error:
elevator_put(new_e);
diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c
index f7c9931..fc12d01 100644
--- a/drivers/block/ll_rw_blk.c
+++ b/drivers/block/ll_rw_blk.c
@@ -1940,7 +1940,7 @@
if (rl->count[rw] >= queue_congestion_on_threshold(q))
set_queue_congested(q, rw);
- priv = !test_bit(QUEUE_FLAG_BYPASS, &q->queue_flags);
+ priv = !test_bit(QUEUE_FLAG_ELVSWITCH, &q->queue_flags);
if (priv)
rl->elvpriv++;