svn commit: r314581 - stable/10/sys/dev/iscsi
Alexander Motin
mav at FreeBSD.org
Fri Mar 3 06:03:02 UTC 2017
Author: mav
Date: Fri Mar 3 06:03:01 2017
New Revision: 314581
URL: https://svnweb.freebsd.org/changeset/base/314581
Log:
MFC r313851: Fix tight loop spinning on postponed requests.
Modified:
stable/10/sys/dev/iscsi/iscsi.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/iscsi/iscsi.c
==============================================================================
--- stable/10/sys/dev/iscsi/iscsi.c Fri Mar 3 06:02:27 2017 (r314580)
+++ stable/10/sys/dev/iscsi/iscsi.c Fri Mar 3 06:03:01 2017 (r314581)
@@ -470,15 +470,14 @@ iscsi_maintenance_thread_terminate(struc
static void
iscsi_maintenance_thread(void *arg)
{
- struct iscsi_session *is;
-
- is = arg;
+ struct iscsi_session *is = arg;
+ ISCSI_SESSION_LOCK(is);
for (;;) {
- ISCSI_SESSION_LOCK(is);
if (is->is_reconnecting == false &&
is->is_terminating == false &&
- STAILQ_EMPTY(&is->is_postponed))
+ (STAILQ_EMPTY(&is->is_postponed) ||
+ ISCSI_SNGT(is->is_cmdsn, is->is_maxcmdsn)))
cv_wait(&is->is_maintenance_cv, &is->is_lock);
/* Terminate supersedes reconnect. */
@@ -492,12 +491,13 @@ iscsi_maintenance_thread(void *arg)
if (is->is_reconnecting) {
ISCSI_SESSION_UNLOCK(is);
iscsi_maintenance_thread_reconnect(is);
+ ISCSI_SESSION_LOCK(is);
continue;
}
iscsi_session_send_postponed(is);
- ISCSI_SESSION_UNLOCK(is);
}
+ ISCSI_SESSION_UNLOCK(is);
}
static void
More information about the svn-src-stable-10
mailing list