Date: Mon, 22 Mar 2021 22:51:55 GMT From: John Baldwin <jhb@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 6a1dbc8ba956 - stable/13 - iscsi: Mark iSCSI CAM sims as non-pollable. Message-ID: <202103222251.12MMptBX071530@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6a1dbc8ba95653c358afb23126a95d4aec51f48b commit 6a1dbc8ba95653c358afb23126a95d4aec51f48b Author: John Baldwin <jhb@FreeBSD.org> AuthorDate: 2021-02-11 21:51:20 +0000 Commit: John Baldwin <jhb@FreeBSD.org> CommitDate: 2021-03-22 20:37:46 +0000 iscsi: Mark iSCSI CAM sims as non-pollable. Previously, iscsi_poll() just panicked. This meant if you got a panic on a box when using the iSCSI initiator, the attempt to shutdown would trigger a nested panic and never write out a core. Now, CCB's sent to iSCSI devices (such as the sychronize-cache request in dashutdown()) just fail with a timeout during a panic shutdown. Sponsored by: Chelsio (cherry picked from commit 47769bc5573fc5d2263f9e20cb06f6c12d0a82e7) --- sys/dev/iscsi/iscsi.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/sys/dev/iscsi/iscsi.c b/sys/dev/iscsi/iscsi.c index c4123d9f4aa7..4367f780d84b 100644 --- a/sys/dev/iscsi/iscsi.c +++ b/sys/dev/iscsi/iscsi.c @@ -171,7 +171,6 @@ static void iscsi_pdu_handle_reject(struct icl_pdu *response); static void iscsi_session_reconnect(struct iscsi_session *is); static void iscsi_session_terminate(struct iscsi_session *is); static void iscsi_action(struct cam_sim *sim, union ccb *ccb); -static void iscsi_poll(struct cam_sim *sim); static struct iscsi_outstanding *iscsi_outstanding_find(struct iscsi_session *is, uint32_t initiator_task_tag); static struct iscsi_outstanding *iscsi_outstanding_add(struct iscsi_session *is, @@ -1491,7 +1490,7 @@ iscsi_ioctl_daemon_handoff(struct iscsi_softc *sc, return (ENOMEM); } - is->is_sim = cam_sim_alloc(iscsi_action, iscsi_poll, "iscsi", + is->is_sim = cam_sim_alloc(iscsi_action, NULL, "iscsi", is, is->is_id /* unit */, &is->is_lock, 1, ic->ic_maxtags, is->is_devq); if (is->is_sim == NULL) { @@ -2462,13 +2461,6 @@ iscsi_action(struct cam_sim *sim, union ccb *ccb) xpt_done(ccb); } -static void -iscsi_poll(struct cam_sim *sim) -{ - - KASSERT(0, ("%s: you're not supposed to be here", __func__)); -} - static void iscsi_terminate_sessions(struct iscsi_softc *sc) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202103222251.12MMptBX071530>