Skip to content

Commit

Permalink
scsi: libsas: Handle non-TMF codes in sas_scsi_find_task()
Browse files Browse the repository at this point in the history
LLDD TMF callbacks may return linux or other error codes instead of TMF
codes. This may cause problems in sas_scsi_find_task() ->
.lldd_query_task(), as only TMF codes are handled there. As such, we may
not return a task_disposition type from sas_scsi_find_task(). Function
sas_eh_handle_sas_errors() only handles that type, and will only progress
error handling for those recognised types.

Return TASK_ABORT_FAILED upon exit on the assumption that the command may
still be alive and error handling should be escalated.

Link: https://lore.kernel.org/r/1645112566-115804-2-git-send-email-john.garry@huawei.com
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
John Garry authored and Martin K. Petersen committed Feb 19, 2022
1 parent ac2beb4 commit 9aacf6f
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/scsi/libsas/sas_scsi_host.c
Original file line number Diff line number Diff line change
Expand Up @@ -316,11 +316,13 @@ static enum task_disposition sas_scsi_find_task(struct sas_task *task)
pr_notice("%s: task 0x%p failed to abort\n",
__func__, task);
return TASK_ABORT_FAILED;
default:
pr_notice("%s: task 0x%p result code %d not handled\n",
__func__, task, res);
}

}
}
return res;
return TASK_ABORT_FAILED;
}

static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd)
Expand Down

0 comments on commit 9aacf6f

Please sign in to comment.