aboutsummaryrefslogtreecommitdiffstats
path: root/block/elevator.c
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2007-01-18 19:27:47 -0500
committerJens Axboe <axboe@carl.home.kernel.dk>2007-02-11 17:14:44 -0500
commit783660b2f60418144e168ab75a06786f9695fc70 (patch)
treec25135f978bb2b400852b8aa27458a6d1649e999 /block/elevator.c
parentcad9751642b62cbb5f62feedc546b4f7890497d4 (diff)
elevator: don't sort reads between writes
Don't allow elv_dispatch_sort() to mix reads and writes together, it's rarely a good idea. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
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 d03762399147..25f6ef28e3bb 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -413,6 +413,8 @@ void elv_dispatch_sort(request_queue_t *q, struct request *rq)
413 list_for_each_prev(entry, &q->queue_head) { 413 list_for_each_prev(entry, &q->queue_head) {
414 struct request *pos = list_entry_rq(entry); 414 struct request *pos = list_entry_rq(entry);
415 415
416 if (rq_data_dir(rq) != rq_data_dir(pos))
417 break;
416 if (pos->cmd_flags & (REQ_SOFTBARRIER|REQ_HARDBARRIER|REQ_STARTED)) 418 if (pos->cmd_flags & (REQ_SOFTBARRIER|REQ_HARDBARRIER|REQ_STARTED))
417 break; 419 break;
418 if (rq->sector >= boundary) { 420 if (rq->sector >= boundary) {