Fix tight loop spinning on postponed requests.
MFC after: 2 weeks
This commit is contained in:
parent
7174af791e
commit
5b338bc073
@ -475,15 +475,14 @@ iscsi_maintenance_thread_terminate(struct iscsi_session *is)
|
||||
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. */
|
||||
@ -497,12 +496,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
|
||||
|
Loading…
x
Reference in New Issue
Block a user