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.

                                                -Matt




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to