diff options
| author | Jens Axboe <jens.axboe@oracle.com> | 2007-01-18 19:27:47 -0500 |
|---|---|---|
| committer | Jens Axboe <axboe@carl.home.kernel.dk> | 2007-02-11 17:14:44 -0500 |
| commit | 783660b2f60418144e168ab75a06786f9695fc70 (patch) | |
| tree | c25135f978bb2b400852b8aa27458a6d1649e999 | |
| parent | cad9751642b62cbb5f62feedc546b4f7890497d4 (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>
| -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 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) { |
