svn commit: r264537 - head/sys/dev/iscsi
Edward Tomasz Napierala
trasz at FreeBSD.org
Wed Apr 16 11:28:06 UTC 2014
Author: trasz
Date: Wed Apr 16 11:28:05 2014
New Revision: 264537
URL: http://svnweb.freebsd.org/changeset/base/264537
Log:
Be more strict with locking for is_waiting_for_iscsid variable.
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/dev/iscsi/iscsi.c
Modified: head/sys/dev/iscsi/iscsi.c
==============================================================================
--- head/sys/dev/iscsi/iscsi.c Wed Apr 16 11:19:49 2014 (r264536)
+++ head/sys/dev/iscsi/iscsi.c Wed Apr 16 11:28:05 2014 (r264537)
@@ -1202,8 +1202,10 @@ iscsi_ioctl_daemon_wait(struct iscsi_sof
sx_slock(&sc->sc_lock);
for (;;) {
TAILQ_FOREACH(is, &sc->sc_sessions, is_next) {
+ ISCSI_SESSION_LOCK(is);
if (is->is_waiting_for_iscsid)
break;
+ ISCSI_SESSION_UNLOCK(is);
}
if (is == NULL) {
@@ -1218,7 +1220,6 @@ iscsi_ioctl_daemon_wait(struct iscsi_sof
continue;
}
- ISCSI_SESSION_LOCK(is);
is->is_waiting_for_iscsid = false;
is->is_login_phase = true;
is->is_reason[0] = '\0';
@@ -1651,8 +1652,10 @@ iscsi_ioctl_session_add(struct iscsi_sof
/*
* Trigger immediate reconnection.
*/
+ ISCSI_SESSION_LOCK(is);
is->is_waiting_for_iscsid = true;
strlcpy(is->is_reason, "Waiting for iscsid(8)", sizeof(is->is_reason));
+ ISCSI_SESSION_UNLOCK(is);
cv_signal(&sc->sc_cv);
sx_xunlock(&sc->sc_lock);
More information about the svn-src-head
mailing list