[Midnightbsd-cvs] src [8248] trunk/sys/cam/ctl/ctl_frontend_cam_sim.c: extend sim lock coverage during reg process
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Sep 17 17:34:12 EDT 2016
Revision: 8248
http://svnweb.midnightbsd.org/src/?rev=8248
Author: laffer1
Date: 2016-09-17 17:34:11 -0400 (Sat, 17 Sep 2016)
Log Message:
-----------
extend sim lock coverage during reg process
Modified Paths:
--------------
trunk/sys/cam/ctl/ctl_frontend_cam_sim.c
Modified: trunk/sys/cam/ctl/ctl_frontend_cam_sim.c
===================================================================
--- trunk/sys/cam/ctl/ctl_frontend_cam_sim.c 2016-09-17 21:33:52 UTC (rev 8247)
+++ trunk/sys/cam/ctl/ctl_frontend_cam_sim.c 2016-09-17 21:34:11 UTC (rev 8248)
@@ -175,8 +175,8 @@
if (retval != 0) {
printf("%s: ctl_frontend_register() failed with error %d!\n",
__func__, retval);
- retval = 1;
- goto bailout;
+ mtx_destroy(&softc->lock);
+ return (1);
}
/*
@@ -207,7 +207,7 @@
softc->wwpn = fe->wwpn;
}
-
+ mtx_lock(&softc->lock);
softc->devq = cam_simq_alloc(fe->num_requested_ctl_io);
if (softc->devq == NULL) {
printf("%s: error allocating devq\n", __func__);
@@ -224,9 +224,7 @@
goto bailout;
}
- mtx_lock(&softc->lock);
if (xpt_bus_register(softc->sim, NULL, 0) != CAM_SUCCESS) {
- mtx_unlock(&softc->lock);
printf("%s: error registering SIM\n", __func__);
retval = ENOMEM;
goto bailout;
@@ -236,7 +234,6 @@
cam_sim_path(softc->sim),
CAM_TARGET_WILDCARD,
CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
- mtx_unlock(&softc->lock);
printf("%s: error creating path\n", __func__);
xpt_bus_deregister(cam_sim_path(softc->sim));
retval = 1;
@@ -243,8 +240,6 @@
goto bailout;
}
- mtx_unlock(&softc->lock);
-
xpt_setup_ccb(&csa.ccb_h, softc->path, /*priority*/ 5);
csa.ccb_h.func_code = XPT_SASYNC_CB;
csa.event_enable = AC_LOST_DEVICE;
@@ -252,6 +247,8 @@
csa.callback_arg = softc->sim;
xpt_action((union ccb *)&csa);
+ mtx_unlock(&softc->lock);
+
return (retval);
bailout:
@@ -259,6 +256,8 @@
cam_sim_free(softc->sim, /*free_devq*/ TRUE);
else if (softc->devq)
cam_simq_free(softc->devq);
+ mtx_unlock(&softc->lock);
+ mtx_destroy(&softc->lock);
return (retval);
}
More information about the Midnightbsd-cvs
mailing list