aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block/blk-merge.c6
-rw-r--r--block/elevator.c13
-rw-r--r--drivers/scsi/scsi_lib.c6
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.