git: 0bc6c9279e51 - main - da: Stop the probing when periph invalidated in dadone_proberc
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 11 Sep 2026 05:32:36 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=0bc6c9279e51ee6dddb7fe307121cd9a54176e81
commit 0bc6c9279e51ee6dddb7fe307121cd9a54176e81
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2026-09-11 05:12:29 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2026-09-11 05:12:29 +0000
da: Stop the probing when periph invalidated in dadone_proberc
When READ CAPACITY fails, we call cam_periph_invalidate() for some
hopeless ASC/ASCQ combinations and then fall through to test the cache
state. This results in excess commands to the abandoned device that may
take a while to timeout and/or report confusing errors. Instead, call
daprobedone() when the periph is invalid to terminate the probe.
Fixes: d78d04b17cb24
Sponsored by: Netflix
MFC After: 1 week
Differential Revision: https://reviews.freebsd.org/D58524
---
sys/cam/scsi/scsi_da.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c
index 7b47beeeccdd..ab88467f0834 100644
--- a/sys/cam/scsi/scsi_da.c
+++ b/sys/cam/scsi/scsi_da.c
@@ -5140,6 +5140,12 @@ dadone_proberc(struct cam_periph *periph, union ccb *done_ccb)
}
}
free(csio->data_ptr, M_SCSIDA);
+
+ if ((periph->flags & CAM_PERIPH_INVALID) != 0) {
+ daprobedone(periph, done_ccb);
+ return;
+ }
+
if (announce_buf != NULL &&
((softc->flags & DA_FLAG_ANNOUNCED) == 0)) {
struct sbuf sb;