block: fix failfast merge testing in elv_rq_merge_ok()
[safe/jmp/linux-2.6] / block / elevator.c
index 6f23753..2d511f9 100644 (file)
@@ -101,11 +101,16 @@ int elv_rq_merge_ok(struct request *rq, struct bio *bio)
                return 0;
 
        /*
-        * Don't merge if failfast settings don't match
+        * Don't merge if failfast settings don't match.
+        *
+        * FIXME: The negation in front of each condition is necessary
+        * because bio and request flags use different bit positions
+        * and the accessors return those bits directly.  This
+        * ugliness will soon go away.
         */
-       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))
+       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))