aboutsummaryrefslogtreecommitdiff
path: root/sys/cam/ctl/scsi_ctl.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2021-02-18 21:22:01 +0000
committerAlexander Motin <mav@FreeBSD.org>2021-02-18 21:31:38 +0000
commitc67a2909a629db138227993e1093e66bb6c00af5 (patch)
tree840cac9015457d6b5d4bdd1b3a526112289da5c9 /sys/cam/ctl/scsi_ctl.c
parent0ee0dbfb0d26cf4bc37f24f12e76c7f532b0f368 (diff)
downloadsrc-c67a2909a629db138227993e1093e66bb6c00af5.tar.gz
src-c67a2909a629db138227993e1093e66bb6c00af5.zip
Move XPT_IMMEDIATE_NOTIFY handling out of periph lock.
It is a rare, but still better to not have lock dependencies. MFC after: 1 month
Diffstat (limited to 'sys/cam/ctl/scsi_ctl.c')
-rw-r--r--sys/cam/ctl/scsi_ctl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/cam/ctl/scsi_ctl.c b/sys/cam/ctl/scsi_ctl.c
index 074ac4cd1894..34c3ce7ad923 100644
--- a/sys/cam/ctl/scsi_ctl.c
+++ b/sys/cam/ctl/scsi_ctl.c
@@ -1491,6 +1491,7 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
ctlfe_free_ccb(periph, done_ccb);
goto out;
}
+ mtx_unlock(mtx);
if (send_ctl_io != 0) {
ctl_queue(io);
} else {
@@ -1498,7 +1499,7 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
done_ccb->ccb_h.func_code = XPT_NOTIFY_ACKNOWLEDGE;
xpt_action(done_ccb);
}
- break;
+ return;
}
case XPT_NOTIFY_ACKNOWLEDGE:
/* Queue this back down to the SIM as an immediate notify. */