diff options
| -rw-r--r-- | block/blk-merge.c | 6 | ||||
| -rw-r--r-- | block/elevator.c | 13 | ||||
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 6 |
3 files changed, 4 insertions, 21 deletions
diff --git a/block/blk-merge.c b/block/blk-merge.c index 7c9ca01baa45..b0de8574fdc8 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c | |||
| @@ -380,12 +380,6 @@ static int attempt_merge(struct request_queue *q, struct request *req, | |||
| 380 | if (blk_integrity_rq(req) != blk_integrity_rq(next)) | 380 | if (blk_integrity_rq(req) != blk_integrity_rq(next)) |
| 381 | return 0; | 381 | return 0; |
| 382 | 382 | ||
| 383 | /* don't merge requests of different failfast settings */ | ||
| 384 | if (blk_failfast_dev(req) != blk_failfast_dev(next) || | ||
| 385 | blk_failfast_transport(req) != blk_failfast_transport(next) || | ||
| 386 | blk_failfast_driver(req) != blk_failfast_driver(next)) | ||
| 387 | return 0; | ||
| 388 | |||
| 389 | /* | 383 | /* |
| 390 | * If we are allowed to merge, then append bio list | 384 | * If we are allowed to merge, then append bio list |
| 391 | * from next to rq and release next. merge_requests_fn | 385 | * from next to rq and release next. merge_requests_fn |
diff --git a/block/elevator.c b/block/elevator.c index 2d511f9105e1..ca861927ba41 100644 --- a/block/elevator.c +++ b/block/elevator.c | |||
| @@ -100,19 +100,6 @@ int elv_rq_merge_ok(struct request *rq, struct bio *bio) | |||
| 100 | if (bio_integrity(bio) != blk_integrity_rq(rq)) | 100 | if (bio_integrity(bio) != blk_integrity_rq(rq)) |
| 101 | return 0; | 101 | return 0; |
| 102 | 102 | ||
| 103 | /* | ||
| 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. | ||
| 110 | */ | ||
| 111 | if (!bio_failfast_dev(bio) != !blk_failfast_dev(rq) || | ||
| 112 | !bio_failfast_transport(bio) != !blk_failfast_transport(rq) || | ||
| 113 | !bio_failfast_driver(bio) != !blk_failfast_driver(rq)) | ||
| 114 | return 0; | ||
| 115 | |||
| 116 | if (!elv_iosched_allow_merge(rq, bio)) | 103 | if (!elv_iosched_allow_merge(rq, bio)) |
| 117 | return 0; | 104 | return 0; |
| 118 | 105 | ||
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index f3c40898fc7d..90c94da8baa4 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -897,8 +897,10 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | |||
| 897 | if (driver_byte(result) & DRIVER_SENSE) | 897 | if (driver_byte(result) & DRIVER_SENSE) |
| 898 | scsi_print_sense("", cmd); | 898 | scsi_print_sense("", cmd); |
| 899 | } | 899 | } |
| 900 | blk_end_request_all(req, -EIO); | 900 | if (blk_end_request_err(req, -EIO)) |
| 901 | scsi_next_command(cmd); | 901 | scsi_requeue_command(q, cmd); |
| 902 | else | ||
| 903 | scsi_next_command(cmd); | ||
| 902 | break; | 904 | break; |
| 903 | case ACTION_REPREP: | 905 | case ACTION_REPREP: |
| 904 | /* Unprep the request and put it back at the head of the queue. | 906 | /* Unprep the request and put it back at the head of the queue. |
