From 3f50f6faf8322345424dd5264c4492ab2c955297 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Sun, 15 Jan 2012 10:29:48 +0100 Subject: [PATCH] Revert "block: recursive merge requests" This reverts commit 556479eeefba791c48fac18e50f48d94757ea288. 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 --- block/elevator.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/block/elevator.c b/block/elevator.c index 99838f460b44d..91e18f8af9bec 100644 --- a/block/elevator.c +++ b/block/elevator.c @@ -515,7 +515,6 @@ static bool elv_attempt_insert_merge(struct request_queue *q, struct request *rq) { struct request *__rq; - bool ret; if (blk_queue_nomerges(q)) return false; @@ -529,21 +528,14 @@ static bool elv_attempt_insert_merge(struct request_queue *q, if (blk_queue_noxmerges(q)) return false; - ret = false; /* * See if our hash lookup can find a potential backmerge. */ - while (1) { - __rq = elv_rqhash_find(q, blk_rq_pos(rq)); - if (!__rq || !blk_attempt_req_merge(q, __rq, rq)) - break; - - /* The merged request could be merged with others, try again */ - ret = true; - rq = __rq; - } + __rq = elv_rqhash_find(q, blk_rq_pos(rq)); + if (__rq && blk_attempt_req_merge(q, __rq, rq)) + return true; - return ret; + return false; } void elv_merged_request(struct request_queue *q, struct request *rq, int type) -- 2.39.5