git: 0d5184c5fb4c - stable/13 - cam: Avoiding waking up doneq threads if we're dumping

Mark Johnston markj at FreeBSD.org
Sat Oct 2 15:28:22 UTC 2021


The branch stable/13 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=0d5184c5fb4c9110e70eaf230673af34ad262458

commit 0d5184c5fb4c9110e70eaf230673af34ad262458
Author:     Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-09-25 14:13:56 +0000
Commit:     Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-10-02 15:28:07 +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
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit ed8ef7ae8b05d9f73db2182b5e24b0b76b0783a2)
---
 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 e3b43e70dc61..0e38166b6ba0 100644
--- a/sys/cam/cam_xpt.c
+++ b/sys/cam/cam_xpt.c
@@ -4635,7 +4635,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-all mailing list