diff options
Diffstat (limited to 'drivers/scsi/libsas/sas_scsi_host.c')
| -rw-r--r-- | drivers/scsi/libsas/sas_scsi_host.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c index 9a7aaf5f131..67758ea8eb7 100644 --- a/drivers/scsi/libsas/sas_scsi_host.c +++ b/drivers/scsi/libsas/sas_scsi_host.c | |||
| @@ -663,11 +663,16 @@ void sas_scsi_recover_host(struct Scsi_Host *shost) | |||
| 663 | * scsi_unjam_host does, but we skip scsi_eh_abort_cmds because any | 663 | * scsi_unjam_host does, but we skip scsi_eh_abort_cmds because any |
| 664 | * command we see here has no sas_task and is thus unknown to the HA. | 664 | * command we see here has no sas_task and is thus unknown to the HA. |
| 665 | */ | 665 | */ |
| 666 | if (!scsi_eh_get_sense(&eh_work_q, &ha->eh_done_q)) | 666 | if (!sas_ata_eh(shost, &eh_work_q, &ha->eh_done_q)) |
| 667 | scsi_eh_ready_devs(shost, &eh_work_q, &ha->eh_done_q); | 667 | if (!scsi_eh_get_sense(&eh_work_q, &ha->eh_done_q)) |
| 668 | scsi_eh_ready_devs(shost, &eh_work_q, &ha->eh_done_q); | ||
| 668 | 669 | ||
| 669 | out: | 670 | out: |
| 671 | /* now link into libata eh --- if we have any ata devices */ | ||
| 672 | sas_ata_strategy_handler(shost); | ||
| 673 | |||
| 670 | scsi_eh_flush_done_q(&ha->eh_done_q); | 674 | scsi_eh_flush_done_q(&ha->eh_done_q); |
| 675 | |||
| 671 | SAS_DPRINTK("--- Exit %s\n", __func__); | 676 | SAS_DPRINTK("--- Exit %s\n", __func__); |
| 672 | return; | 677 | return; |
| 673 | } | 678 | } |
| @@ -676,6 +681,11 @@ enum blk_eh_timer_return sas_scsi_timed_out(struct scsi_cmnd *cmd) | |||
| 676 | { | 681 | { |
| 677 | struct sas_task *task = TO_SAS_TASK(cmd); | 682 | struct sas_task *task = TO_SAS_TASK(cmd); |
| 678 | unsigned long flags; | 683 | unsigned long flags; |
| 684 | enum blk_eh_timer_return rtn; | ||
| 685 | |||
| 686 | if (sas_ata_timed_out(cmd, task, &rtn)) | ||
| 687 | return rtn; | ||
| 688 | |||
| 679 | 689 | ||
| 680 | if (!task) { | 690 | if (!task) { |
| 681 | cmd->request->timeout /= 2; | 691 | cmd->request->timeout /= 2; |
