Date: Mon, 09 Feb 2015 15:09:46 -0500 From: John Baldwin <jhb@freebsd.org> To: Randall Stewart <rrs@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r278469 - in head/sys: kern sys Message-ID: <1619204.FQlXD7hmMU@ralph.baldwin.cx> In-Reply-To: <201502091919.t19JJjbg061542@svn.freebsd.org> References: <201502091919.t19JJjbg061542@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1619204.FQlXD7hmMU>