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