diff options
| -rw-r--r-- | block/elevator.c | 13 |
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)) |
