diff options
author | Chauhan, Vijay <Vijay.Chauhan@lsi.com> | 2009-04-20 08:44:23 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-05-20 18:21:14 -0400 |
commit | 8f03226358972f93cd45be0a710927cbb7fd5127 (patch) | |
tree | 2eb0bb2f78263675469a83d8a11d85724d4961c9 /drivers/scsi/device_handler | |
parent | fa8584566cc9cdaf067dbc12132792887a521da9 (diff) |
[SCSI] scsi_dh_rdac: Retry for NOT_READY(02/04/01) in rdac device handler
During device discovery read capacity fails with 0x020401 and sets the
device size to 0. As a reason any I/O submitted to this path gets
killed at sd_prep_fn with BLKPREP_KILL. This patch is to retry for
0x020401. NEED_RETRY in scsi_decide_disposition does not give
sufficient time for the device to become ready.
Signed-off-by: Vijay Chauhan <vijay.chauhan@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/device_handler')
-rw-r--r-- | drivers/scsi/device_handler/scsi_dh_rdac.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c index 43b8c51e98d0..fd0544f7da81 100644 --- a/drivers/scsi/device_handler/scsi_dh_rdac.c +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c | |||
@@ -561,6 +561,12 @@ static int rdac_check_sense(struct scsi_device *sdev, | |||
561 | struct rdac_dh_data *h = get_rdac_data(sdev); | 561 | struct rdac_dh_data *h = get_rdac_data(sdev); |
562 | switch (sense_hdr->sense_key) { | 562 | switch (sense_hdr->sense_key) { |
563 | case NOT_READY: | 563 | case NOT_READY: |
564 | if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x01) | ||
565 | /* LUN Not Ready - Logical Unit Not Ready and is in | ||
566 | * the process of becoming ready | ||
567 | * Just retry. | ||
568 | */ | ||
569 | return ADD_TO_MLQUEUE; | ||
564 | if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x81) | 570 | if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x81) |
565 | /* LUN Not Ready - Storage firmware incompatible | 571 | /* LUN Not Ready - Storage firmware incompatible |
566 | * Manual code synchonisation required. | 572 | * Manual code synchonisation required. |