aboutsummaryrefslogtreecommitdiffstats
path: root/block/elevator.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2012-01-15 04:29:48 -0500
committerJens Axboe <axboe@kernel.dk>2012-01-15 04:29:48 -0500
commit5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922 (patch)
treefba354212902ad0c7228bff43a38aca6df47c899 /block/elevator.c
parent6898e3bd11cc9a931ef115eee9000ac9d8f8c3cf (diff)
Revert "block: recursive merge requests"
This reverts commit 274193224cdabd687d804a26e0150bb20f2dd52c. We have some problems related to selection of empty queues that need to be resolved, evidence so far points to the recursive merge logic making either being the cause or at least the accelerator for this. So revert it for now, until we figure this out. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/elevator.c')
-rw-r--r--block/elevator.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/block/elevator.c b/block/elevator.c
index 99838f460b44..91e18f8af9be 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -515,7 +515,6 @@ static bool elv_attempt_insert_merge(struct request_queue *q,
515 struct request *rq) 515 struct request *rq)
516{ 516{
517 struct request *__rq; 517 struct request *__rq;
518 bool ret;
519 518
520 if (blk_queue_nomerges(q)) 519 if (blk_queue_nomerges(q))
521 return false; 520 return false;
@@ -529,21 +528,14 @@ static bool elv_attempt_insert_merge(struct request_queue *q,
529 if (blk_queue_noxmerges(q)) 528 if (blk_queue_noxmerges(q))
530 return false; 529 return false;
531 530
532 ret = false;
533 /* 531 /*
534 * See if our hash lookup can find a potential backmerge. 532 * See if our hash lookup can find a potential backmerge.
535 */ 533 */
536 while (1) { 534 __rq = elv_rqhash_find(q, blk_rq_pos(rq));
537 __rq = elv_rqhash_find(q, blk_rq_pos(rq)); 535 if (__rq && blk_attempt_req_merge(q, __rq, rq))
538 if (!__rq || !blk_attempt_req_merge(q, __rq, rq)) 536 return true;
539 break;
540
541 /* The merged request could be merged with others, try again */
542 ret = true;
543 rq = __rq;
544 }
545 537
546 return ret; 538 return false;
547} 539}
548 540
549void elv_merged_request(struct request_queue *q, struct request *rq, int type) 541void elv_merged_request(struct request_queue *q, struct request *rq, int type)