git: ed8ef7ae8b05 - main - cam: Avoiding waking up doneq threads if we're dumping
Mark Johnston
markj at FreeBSD.org
Sat Sep 25 14:28:11 UTC 2021
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=ed8ef7ae8b05d9f73db2182b5e24b0b76b0783a2
commit ed8ef7ae8b05d9f73db2182b5e24b0b76b0783a2
Author: Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-09-25 14:13:56 +0000
Commit: Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-09-25 14:15:03 +0000
cam: Avoiding waking up doneq threads if we're dumping
Depending on the state of the target doneq thread at the time of the
panic, the wakeup can hang indefinitely in thread_lock_block_wait().
That function should likely be modified to return immediately if the
scheduler is stopped, but it is also preferable to avoid wakeups in
general after a panic.
Reported by: pho
Reviewed by: mav, imp
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32126
---
sys/cam/cam_xpt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c
index 6b5a04b174e1..e228f0967f0e 100644
--- a/sys/cam/cam_xpt.c
+++ b/sys/cam/cam_xpt.c
@@ -4627,7 +4627,7 @@ xpt_done(union ccb *done_ccb)
STAILQ_INSERT_TAIL(&queue->cam_doneq, &done_ccb->ccb_h, sim_links.stqe);
done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX;
mtx_unlock(&queue->cam_doneq_mtx);
- if (run)
+ if (run && !dumping)
wakeup(&queue->cam_doneq);
}
More information about the dev-commits-src-main
mailing list