The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=87085c12ba8fa51f777bc636df67008b45e20d1c
commit 87085c12ba8fa51f777bc636df67008b45e20d1c Author: Alexander Motin <[email protected]> AuthorDate: 2024-06-27 13:29:23 +0000 Commit: Alexander Motin <[email protected]> CommitDate: 2024-06-27 13:29:23 +0000 Fix SATA NCQ error recovery after 25375b1415 Since that commit ahci(4), siis(4) and mvs(4) drivers ended up using wrong command to fetch error information for NCQ commands. Since ATA errors are not very informative to begin with, the only noticeable effect is a lack of retries on those errors by CAM. MFC after: 1 week PR: 279978 --- sys/dev/ahci/ahci.c | 2 +- sys/dev/mvs/mvs.c | 2 +- sys/dev/siis/siis.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c index b8cca377e47f..2910247d9327 100644 --- a/sys/dev/ahci/ahci.c +++ b/sys/dev/ahci/ahci.c @@ -2175,7 +2175,7 @@ completeall: } xpt_setup_ccb(&ccb->ccb_h, ch->hold[i]->ccb_h.path, ch->hold[i]->ccb_h.pinfo.priority); - if (ccb->ccb_h.func_code == XPT_ATA_IO) { + if (ch->hold[i]->ccb_h.func_code == XPT_ATA_IO) { /* READ LOG */ ccb->ccb_h.recovery_type = RECOVERY_READ_LOG; ccb->ccb_h.func_code = XPT_ATA_IO; diff --git a/sys/dev/mvs/mvs.c b/sys/dev/mvs/mvs.c index 253fdc096475..9677d16f088c 100644 --- a/sys/dev/mvs/mvs.c +++ b/sys/dev/mvs/mvs.c @@ -1798,7 +1798,7 @@ completeall: } xpt_setup_ccb(&ccb->ccb_h, ch->hold[i]->ccb_h.path, ch->hold[i]->ccb_h.pinfo.priority); - if (ccb->ccb_h.func_code == XPT_ATA_IO) { + if (ch->hold[i]->ccb_h.func_code == XPT_ATA_IO) { /* READ LOG */ ccb->ccb_h.recovery_type = RECOVERY_READ_LOG; ccb->ccb_h.func_code = XPT_ATA_IO; diff --git a/sys/dev/siis/siis.c b/sys/dev/siis/siis.c index ad370c99f85e..e5b0b8b1f009 100644 --- a/sys/dev/siis/siis.c +++ b/sys/dev/siis/siis.c @@ -1394,7 +1394,7 @@ completeall: } xpt_setup_ccb(&ccb->ccb_h, ch->hold[i]->ccb_h.path, ch->hold[i]->ccb_h.pinfo.priority); - if (ccb->ccb_h.func_code == XPT_ATA_IO) { + if (ch->hold[i]->ccb_h.func_code == XPT_ATA_IO) { /* READ LOG */ ccb->ccb_h.recovery_type = RECOVERY_READ_LOG; ccb->ccb_h.func_code = XPT_ATA_IO;
