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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"