svn commit: r276629 - stable/10/sys/dev/iscsi
Alexander Motin
mav at FreeBSD.org
Sat Jan 3 18:35:31 UTC 2015
Author: mav
Date: Sat Jan 3 18:35:29 2015
New Revision: 276629
URL: https://svnweb.freebsd.org/changeset/base/276629
Log:
MFC r272765: Remove one second wait for threads exit from icl_conn_close().
Switch it from polling with pause() to using cv_wait()/cv_signal().
Modified:
stable/10/sys/dev/iscsi/icl.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/iscsi/icl.c
==============================================================================
--- stable/10/sys/dev/iscsi/icl.c Sat Jan 3 18:27:03 2015 (r276628)
+++ stable/10/sys/dev/iscsi/icl.c Sat Jan 3 18:35:29 2015 (r276629)
@@ -776,6 +776,7 @@ icl_receive_thread(void *arg)
ICL_CONN_LOCK(ic);
ic->ic_receive_running = false;
+ cv_signal(&ic->ic_send_cv);
ICL_CONN_UNLOCK(ic);
kthread_exit();
}
@@ -1026,6 +1027,7 @@ icl_send_thread(void *arg)
STAILQ_CONCAT(&ic->ic_to_send, &queue);
ic->ic_send_running = false;
+ cv_signal(&ic->ic_send_cv);
ICL_CONN_UNLOCK(ic);
kthread_exit();
}
@@ -1330,15 +1332,11 @@ icl_conn_close(struct icl_conn *ic)
/*
* Wake up the threads, so they can properly terminate.
*/
- cv_signal(&ic->ic_receive_cv);
- cv_signal(&ic->ic_send_cv);
while (ic->ic_receive_running || ic->ic_send_running) {
//ICL_DEBUG("waiting for send/receive threads to terminate");
- ICL_CONN_UNLOCK(ic);
cv_signal(&ic->ic_receive_cv);
cv_signal(&ic->ic_send_cv);
- pause("icl_close", 1 * hz);
- ICL_CONN_LOCK(ic);
+ cv_wait(&ic->ic_send_cv, ic->ic_lock);
}
//ICL_DEBUG("send/receive threads terminated");
More information about the svn-src-all
mailing list