aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMing Lei <ming.lei@canonical.com>2015-10-20 11:13:55 -0400
committerJens Axboe <axboe@fb.com>2015-10-21 17:00:54 -0400
commit7460d389c01741f0dfff733af93d3b3abd9b974e (patch)
treeec3904b3fab8e38bb5b2c583cdde993ef2d7f451
parente18378a60e27ad7b3e11ecc4e2c92159585dee68 (diff)
block: check bio_mergeable() early before merging
After bio splitting is introduced, one bio can be splitted and it is marked as NOMERGE because it is too fat to be merged, so check bio_mergeable() earlier to avoid to try to merge it unnecessarily. Signed-off-by: Ming Lei <ming.lei@canonical.com> Reviewed-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--block/elevator.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/elevator.c b/block/elevator.c
index 84d63943f2de..c3555c9c672f 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -420,7 +420,7 @@ int elv_merge(struct request_queue *q, struct request **req, struct bio *bio)
420 * noxmerges: Only simple one-hit cache try 420 * noxmerges: Only simple one-hit cache try
421 * merges: All merge tries attempted 421 * merges: All merge tries attempted
422 */ 422 */
423 if (blk_queue_nomerges(q)) 423 if (blk_queue_nomerges(q) || !bio_mergeable(bio))
424 return ELEVATOR_NO_MERGE; 424 return ELEVATOR_NO_MERGE;
425 425
426 /* 426 /*