svn commit: r278469 - in head/sys: kern sys

randall rrs at freebsd.org
Mon Feb 9 21:41:05 UTC 2015


John:

See below..

On 2/9/15 3:09 PM, John Baldwin wrote:
> On Monday, February 09, 2015 07:19:45 PM Randall Stewart wrote:
>> Author: rrs
>> Date: Mon Feb  9 19:19:44 2015
>> New Revision: 278469
>> URL: https://svnweb.freebsd.org/changeset/base/278469
>>
>> Log:
>>    This fixes two conditions that can incur when migration
>>    is being done in the callout code and harmonizes the macro
>>    use.:
>>    1) The callout_active() will lie. Basically if a migration
>>       is occuring and the callout is about to expire and the
>>       migration has been deferred, the callout_active will no
>>       longer return true until after the migration. This confuses
>>       and breaks callers that are doing callout_init(&c, 1); such
>>       as TCP.
>>    2) The migration code had a bug in it where when migrating, if
>>       a two calls to callout_reset came in and they both collided with
>>       the callout on the wheel about to run, then the second call to
>>       callout_reset would corrupt the list the callout wheel uses
>>       putting the callout thread into a endless loop.
>>    3) Per imp, I have fixed all the macro occurance in the code that
>>       were for the most part being ignored.
>>
>>    Phabricator D1711 and looked at by lstewart and jhb and sbruno.
>>    Reviewed by:	kostikbel, imp, adrian, hselasky
>>    MFC after:	3 days
>>    Sponsored by:	Netflix Inc.
> Thank you guys for working together to fix the migration race in a way
> that lets CALLOUT_MPSAFE timers use multiple CPUs still.

Your very much welcome.. it was a fun bug to track down :-)

>
> I do think that callout_drain_async() would also be useful to add.

Well, I have been thinking about this, and I do think it will be easy to 
add though
I did not want to further pollute the commit with new features. I will 
see about working
on it here in the next few weeks :-)

R
>



More information about the svn-src-all mailing list