mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
scsi: core: scsi_error: Do not queue pointless abort workqueue functions
If a host template doesn't implement the .eh_abort_handler() there is no point in queueing the abort workqueue function; all it does is invoking SCSI EH anyway. So return 'FAILED' from scsi_abort_command() if the .eh_abort_handler() is not implemented and save us from having to wait for the abort workqueue function to complete. Cc: Niklas Cassel <niklas.cassel@wdc.com> Cc: Damien Le Moal <damien.lemoal@opensource.wdc.com> Cc: John Garry <john.g.garry@oracle.com> Signed-off-by: Hannes Reinecke <hare@suse.de> [niklas: moved the check to the top of scsi_abort_command()] Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Link: https://lore.kernel.org/r/20221206131346.2045375-1-niklas.cassel@wdc.com Reviewed-by: John Garry <john.g.garry@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
67ff3d0a49
commit
d0b9025540
@ -231,6 +231,11 @@ scsi_abort_command(struct scsi_cmnd *scmd)
|
||||
struct Scsi_Host *shost = sdev->host;
|
||||
unsigned long flags;
|
||||
|
||||
if (!shost->hostt->eh_abort_handler) {
|
||||
/* No abort handler, fail command directly */
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
if (scmd->eh_eflags & SCSI_EH_ABORT_SCHEDULED) {
|
||||
/*
|
||||
* Retry after abort failed, escalate to next level.
|
||||
|
Loading…
Reference in New Issue
Block a user