jhb c54b68ab60 Close a race that snuck in with the recent changes to fix a LOR between
the callout_lock spin lock and the sleepqueue spin locks.  In the fix,
callout_drain() has to drop the callout_lock so it can acquire the
sleepqueue lock.  The state of the callout can change while the
callout_lock is held however (for example, it can be rescheduled via
callout_reset()).  The previous code assumed that the only state change
that could happen is that the callout could finish executing.  This change
alters callout_drain() to effectively restart and recheck everything
after it acquires the sleepqueue lock thus handling all the possible
states that the callout could be in after any changes while callout_lock
was dropped.

Approved by:	re (kensmith)
Tested by:	kris
2007-08-31 19:01:30 +00:00
..
2007-08-16 05:32:26 +00:00
2007-04-23 12:53:00 +00:00
2006-05-28 22:15:28 +00:00
2007-08-16 05:32:26 +00:00
2007-08-16 05:32:26 +00:00
2007-08-15 17:40:09 +00:00
2007-08-13 21:23:30 +00:00