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

John Baldwin jhb at freebsd.org
Mon Feb 9 20:34:40 UTC 2015


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.

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

-- 
John Baldwin


More information about the svn-src-all mailing list