浏览代码

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>
Jens Axboe 18 年之前
父节点
当前提交
783660b2f6
共有 1 个文件被更改,包括 2 次插入0 次删除
  1. 2 0
      block/elevator.c

+ 2 - 0
block/elevator.c

@@ -413,6 +413,8 @@ void elv_dispatch_sort(request_queue_t *q, struct request *rq)
 	list_for_each_prev(entry, &q->queue_head) {
 		struct request *pos = list_entry_rq(entry);
 
+		if (rq_data_dir(rq) != rq_data_dir(pos))
+			break;
 		if (pos->cmd_flags & (REQ_SOFTBARRIER|REQ_HARDBARRIER|REQ_STARTED))
 			break;
 		if (rq->sector >= boundary) {