diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-10-25 20:42:29 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-10-25 20:42:29 +0300 |
commit | 7a7aecd9c031c25988d0e123750674e6d6a876ec (patch) | |
tree | 21e2eb33ccdc0f013529316aed8ae7992c04ff7e | |
parent | 01154cc30e343952d7ab1c6b35c3577725dc5d54 (diff) | |
parent | 8e59a2a5459fd9840dbe2cbde85fe154b11e1727 (diff) | |
download | linux-7a7aecd9c031c25988d0e123750674e6d6a876ec.tar.xz |
Merge tag 'ata-6.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux
Pull ata fix from Niklas Cassel:
- Fix the handling of ATA commands that timeout (command that did not
receive a completion interrupt within the configured timeout time).
Commands that timeout, while also having either the FAILFAST flag
set, or the command being a passthrough command, should never be
retried. Restore this behavior (as it was before v6.12-rc1).
* tag 'ata-6.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux:
ata: libata: Set DID_TIME_OUT for commands that actually timed out
-rw-r--r-- | drivers/ata/libata-eh.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index fa41ea57a978..3b303d4ae37a 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -651,6 +651,7 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, /* the scmd has an associated qc */ if (!(qc->flags & ATA_QCFLAG_EH)) { /* which hasn't failed yet, timeout */ + set_host_byte(scmd, DID_TIME_OUT); qc->err_mask |= AC_ERR_TIMEOUT; qc->flags |= ATA_QCFLAG_EH; nr_timedout++; |