From 06f13ad23365f8104a978c51a93e49134c195238 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Fri, 3 Jul 2009 12:56:18 +0200 Subject: [PATCH] --- yaml --- r: 154816 b: refs/heads/master c: ab0fd1debe730ec9998678a0c53caefbd121ed10 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/block/blk-merge.c | 6 ++++++ trunk/block/elevator.c | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index fa249d1e6c90..37e08d1480ad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b59e64d0ddb756af57ea032383bfd393a286a8e8 +refs/heads/master: ab0fd1debe730ec9998678a0c53caefbd121ed10 diff --git a/trunk/block/blk-merge.c b/trunk/block/blk-merge.c index 39ce64432ba6..e1999679a4d5 100644 --- a/trunk/block/blk-merge.c +++ b/trunk/block/blk-merge.c @@ -350,6 +350,12 @@ static int attempt_merge(struct request_queue *q, struct request *req, if (blk_integrity_rq(req) != blk_integrity_rq(next)) return 0; + /* don't merge requests of different failfast settings */ + if (blk_failfast_dev(req) != blk_failfast_dev(next) || + blk_failfast_transport(req) != blk_failfast_transport(next) || + blk_failfast_driver(req) != blk_failfast_driver(next)) + return 0; + /* * If we are allowed to merge, then append bio list * from next to rq and release next. merge_requests_fn diff --git a/trunk/block/elevator.c b/trunk/block/elevator.c index ca861927ba41..6f2375339a99 100644 --- a/trunk/block/elevator.c +++ b/trunk/block/elevator.c @@ -100,6 +100,14 @@ int elv_rq_merge_ok(struct request *rq, struct bio *bio) if (bio_integrity(bio) != blk_integrity_rq(rq)) return 0; + /* + * Don't merge if failfast settings don't match + */ + if (bio_failfast_dev(bio) != blk_failfast_dev(rq) || + bio_failfast_transport(bio) != blk_failfast_transport(rq) || + bio_failfast_driver(bio) != blk_failfast_driver(rq)) + return 0; + if (!elv_iosched_allow_merge(rq, bio)) return 0;