Merge branch 'condvar'
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 17 Oct 2012 15:47:07 +0000 (08:47 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 17 Oct 2012 15:48:29 +0000 (08:48 -0700)
commit82f46731fd5a9eef4f87530e94922664b58a6138
tree0ee40606a18abd4aed4c86bdde028a2a1a5cbd03
parent6cb7ab069d9079a5b4b955da883d5ab804c91319
parenta298dbde92c68022a06ef51f2bb559b0975e4920
Merge branch 'condvar'

Auditing the code to verify that all instances of cv_signal() and
cv_broadcast() are called under the proper associated mutex turned
up several races. None of these have been conclusively seen in the
wild but the following patch set resolves them.

For reference, from the cv_signal(9F) man page:

  cv_signal() signals the condition and wakes one blocked thread.
  All blocked threads can be unblocked by calling cv_broadcast().
  You must acquire the mutex passed into cv_wait() before calling
  cv_signal() or cv_broadcast()

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1048