Revert "block: recursive merge requests"
authorJens Axboe <axboe@kernel.dk>
Sun, 15 Jan 2012 09:29:48 +0000 (10:29 +0100)
committerJens Axboe <axboe@kernel.dk>
Sun, 15 Jan 2012 09:29:48 +0000 (10:29 +0100)
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>
block/elevator.c

index 99838f460b44d5c399505071b3d9105218e30c68..91e18f8af9becaace380cc687d279eb1f47cb79a 100644 (file)
@@ -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)