aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/smartpqi/smartpqi_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/smartpqi/smartpqi_init.c')
-rw-r--r--drivers/scsi/smartpqi/smartpqi_init.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index c26cac819f9e..b17761eafca9 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -2755,16 +2755,25 @@ static void pqi_process_raid_io_error(struct pqi_io_request *io_request)
2755 scsi_normalize_sense(error_info->data, 2755 scsi_normalize_sense(error_info->data,
2756 sense_data_length, &sshdr) && 2756 sense_data_length, &sshdr) &&
2757 sshdr.sense_key == HARDWARE_ERROR && 2757 sshdr.sense_key == HARDWARE_ERROR &&
2758 sshdr.asc == 0x3e && 2758 sshdr.asc == 0x3e) {
2759 sshdr.ascq == 0x1) {
2760 struct pqi_ctrl_info *ctrl_info = shost_to_hba(scmd->device->host); 2759 struct pqi_ctrl_info *ctrl_info = shost_to_hba(scmd->device->host);
2761 struct pqi_scsi_dev *device = scmd->device->hostdata; 2760 struct pqi_scsi_dev *device = scmd->device->hostdata;
2762 2761
2763 if (printk_ratelimit()) 2762 switch (sshdr.ascq) {
2764 scmd_printk(KERN_ERR, scmd, "received 'logical unit failure' from controller for scsi %d:%d:%d:%d\n", 2763 case 0x1: /* LOGICAL UNIT FAILURE */
2765 ctrl_info->scsi_host->host_no, device->bus, device->target, device->lun); 2764 if (printk_ratelimit())
2766 pqi_take_device_offline(scmd->device, "RAID"); 2765 scmd_printk(KERN_ERR, scmd, "received 'logical unit failure' from controller for scsi %d:%d:%d:%d\n",
2767 host_byte = DID_NO_CONNECT; 2766 ctrl_info->scsi_host->host_no, device->bus, device->target, device->lun);
2767 pqi_take_device_offline(scmd->device, "RAID");
2768 host_byte = DID_NO_CONNECT;
2769 break;
2770
2771 default: /* See http://www.t10.org/lists/asc-num.htm#ASC_3E */
2772 if (printk_ratelimit())
2773 scmd_printk(KERN_ERR, scmd, "received unhandled error %d from controller for scsi %d:%d:%d:%d\n",
2774 sshdr.ascq, ctrl_info->scsi_host->host_no, device->bus, device->target, device->lun);
2775 break;
2776 }
2768 } 2777 }
2769 2778
2770 if (sense_data_length > SCSI_SENSE_BUFFERSIZE) 2779 if (sense_data_length > SCSI_SENSE_BUFFERSIZE)