svn commit: r235031 - projects/iscsi_opt/sys/dev/iscsi/initiator
Kip Macy
kmacy at FreeBSD.org
Fri May 4 19:26:03 UTC 2012
Author: kmacy
Date: Fri May 4 19:26:03 2012
New Revision: 235031
URL: http://svn.freebsd.org/changeset/base/235031
Log:
unfreeze queue in completion handler
Modified:
projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c
projects/iscsi_opt/sys/dev/iscsi/initiator/iscsivar.h
Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c
==============================================================================
--- projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c Fri May 4 18:57:45 2012 (r235030)
+++ projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c Fri May 4 19:26:03 2012 (r235031)
@@ -251,16 +251,8 @@ ic_action(struct cam_sim *sim, union ccb
if (rc == EWOULDBLOCK) {
if ((sp->cam_flags & ISC_QFROZEN) == 0) {
- CAM_UNLOCK(sp);
- SOCKBUF_LOCK(&sp->soc->so_snd);
- CAM_LOCK(sp);
- if ((sp->cam_flags & ISC_QFROZEN) == 0) {
- sp->cam_flags |= ISC_QFROZEN;
- xpt_freeze_simq(sim, 1);
- soupcall_set(sp->soc, SO_SND, isc_so_snd_upcall, sp);
- }
- /* else we lost the race and someone else froze it for us oh well */
- SOCKBUF_UNLOCK(&sp->soc->so_snd);
+ sp->cam_flags |= ISC_QFROZEN;
+ xpt_freeze_simq(sim, 1);
}
status = ccb->ccb_h.status &= ~CAM_STATUS_MASK;
csio->ccb_h.status = status | CAM_REQUEUE_REQ;
Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/iscsivar.h
==============================================================================
--- projects/iscsi_opt/sys/dev/iscsi/initiator/iscsivar.h Fri May 4 18:57:45 2012 (r235030)
+++ projects/iscsi_opt/sys/dev/iscsi/initiator/iscsivar.h Fri May 4 19:26:03 2012 (r235031)
@@ -336,6 +336,13 @@ XPT_DONE(isc_session_t *sp, union ccb *c
inq->flags |= SID_CmdQue;
}
CAM_LOCK(sp);
+ if (sp->cam_flags & ISC_QFROZEN) {
+ if (sbspace(&sp->soc->so_snd) >= sp->space_needed) {
+ sp->space_needed = 0;
+ ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
+ sp->cam_flags &= ~ISC_QFROZEN;
+ }
+ }
xpt_done(ccb);
CAM_UNLOCK(sp);
}
More information about the svn-src-projects
mailing list