aboutsummaryrefslogtreecommitdiffstats
path: root/block/elevator.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/elevator.c')
-rw-r--r--block/elevator.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/block/elevator.c b/block/elevator.c
index 6f2375339a99..2d511f9105e1 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -101,11 +101,16 @@ int elv_rq_merge_ok(struct request *rq, struct bio *bio)
101 return 0; 101 return 0;
102 102
103 /* 103 /*
104 * Don't merge if failfast settings don't match 104 * Don't merge if failfast settings don't match.
105 *
106 * FIXME: The negation in front of each condition is necessary
107 * because bio and request flags use different bit positions
108 * and the accessors return those bits directly. This
109 * ugliness will soon go away.
105 */ 110 */
106 if (bio_failfast_dev(bio) != blk_failfast_dev(rq) || 111 if (!bio_failfast_dev(bio) != !blk_failfast_dev(rq) ||
107 bio_failfast_transport(bio) != blk_failfast_transport(rq) || 112 !bio_failfast_transport(bio) != !blk_failfast_transport(rq) ||
108 bio_failfast_driver(bio) != blk_failfast_driver(rq)) 113 !bio_failfast_driver(bio) != !blk_failfast_driver(rq))
109 return 0; 114 return 0;
110 115
111 if (!elv_iosched_allow_merge(rq, bio)) 116 if (!elv_iosched_allow_merge(rq, bio))