Just a quick perusal of the kernel code shows a number of possible
unexpected side effects from unexpected wakeups. I see several places
where a 'WANTED' flag is set in a loop waiting for something and assumed
to be cleared after the tsleep() returns. Some of these side effects
are quite persistent. For example, if PG_WANTED is set in a page the
VM system will activate the page rather then deactivate it. An unexpected
wakeup in the VM system could lead to a page with PG_WANTED *LEFT* *SET*
on the page! It might not be fatal, but it sure isn't the type of
operation we want!
There are a couple of places in the NFS code where a sleep wakeup
results in a retry. There is a place where LC_EXPIREDWANTED is
checked and causes a whole sequence of conditionals to be skipped.
This is after 5 minutes of searching. I'm not going to spend N hours
trying to find every case. Just finding two in 5 minutes is enough
proof for me that it's just too dangerous to go and change expected
tsleep/wakeup semantics without going through and auditing and
documenting every piece of code that uses tsleep/wakeup.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message