diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-05-13 09:56:24 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-05-13 09:56:24 +0100 |
commit | 74b8721099992b76d3faff78cb8a5d13c65c3529 (patch) | |
tree | 2c9971160051cae98237715f791ce2b93a0720b5 /drivers/scsi/scsi_error.c | |
parent | 4bddaf66093ce0e0c1fce505f091f4cd52e73e2e (diff) | |
parent | baffe1699c68da5040de6b274054adc995795782 (diff) | |
download | kernel-crypto-74b8721099992b76d3faff78cb8a5d13c65c3529.tar.gz kernel-crypto-74b8721099992b76d3faff78cb8a5d13c65c3529.tar.xz kernel-crypto-74b8721099992b76d3faff78cb8a5d13c65c3529.zip |
Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel-stable
Diffstat (limited to 'drivers/scsi/scsi_error.c')
-rw-r--r-- | drivers/scsi/scsi_error.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index d45c69ca573..7ad53fa4276 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -302,7 +302,20 @@ static int scsi_check_sense(struct scsi_cmnd *scmd) if (scmd->device->allow_restart && (sshdr.asc == 0x04) && (sshdr.ascq == 0x02)) return FAILED; - return SUCCESS; + + if (blk_barrier_rq(scmd->request)) + /* + * barrier requests should always retry on UA + * otherwise block will get a spurious error + */ + return NEEDS_RETRY; + else + /* + * for normal (non barrier) commands, pass the + * UA upwards for a determination in the + * completion functions + */ + return SUCCESS; /* these three are not supported */ case COPY_ABORTED: |