aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/scsi_error.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 08ed506e6059..e46155b006dc 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -301,7 +301,20 @@ static int scsi_check_sense(struct scsi_cmnd *scmd)
301 if (scmd->device->allow_restart && 301 if (scmd->device->allow_restart &&
302 (sshdr.asc == 0x04) && (sshdr.ascq == 0x02)) 302 (sshdr.asc == 0x04) && (sshdr.ascq == 0x02))
303 return FAILED; 303 return FAILED;
304 return SUCCESS; 304
305 if (blk_barrier_rq(scmd->request))
306 /*
307 * barrier requests should always retry on UA
308 * otherwise block will get a spurious error
309 */
310 return NEEDS_RETRY;
311 else
312 /*
313 * for normal (non barrier) commands, pass the
314 * UA upwards for a determination in the
315 * completion functions
316 */
317 return SUCCESS;
305 318
306 /* these three are not supported */ 319 /* these three are not supported */
307 case COPY_ABORTED: 320 case COPY_ABORTED: