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-head
mailing list