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

Reply via email to