On Tue, Jul 05, 2016 at 11:48:56AM -0700, Ngie Cooper (yaneurabeya) wrote:
N> > Author: glebius
N> > Date: Tue Jul  5 18:47:17 2016
N> > New Revision: 302350
N> > URL: https://svnweb.freebsd.org/changeset/base/302350
N> > 
N> > Log:
N> >  The paradigm of a callout is that it has three consequent states:
N> >  not scheduled -> scheduled -> running -> not scheduled. The API and the
N> >  manual page assume that, some comments in the code assume that, and looks
N> >  like some contributors to the code also did. The problem is that this
N> >  paradigm isn't true. A callout can be scheduled and running at the same
N> >  time, which makes API description ambigouous. In such case callout_stop()
N> >  family of functions/macros should return 1 and 0 at the same time, since 
it
N> >  successfully unscheduled future callout but the current one is running.
N> >  Before this change we returned 1 in such a case, with an exception that
N> >  if running callout was migrating we returned 0, unless CS_MIGRBLOCK was
N> >  specified.
N> > 
N> >  With this change, we now return 0 in case if future callout was 
unscheduled,
N> >  but another one is still in action, indicating to API users that resources
N> >  are not yet safe to be freed.
N> > 
N> >  However, the sleepqueue code relies on getting 1 return code in that case,
N> >  and there already was CS_MIGRBLOCK flag, that covered one of the edge 
cases.
N> >  In the new return path we will also use this flag, to keep sleepqueue 
safe.
N> > 
N> >  Since the flag CS_MIGRBLOCK doesn't block migration and now isn't limited 
to
N> >  migration edge case, rename it to CS_EXECUTING.
N> > 
N> >  This change fixes panics on a high loaded TCP server.
N> > 
N> >  Reviewed by:      jch, hselasky, rrs, kib
N> >  Approved by:      re (gjb)
N> >  Differential Revision:    https://reviews.freebsd.org/D7042
N> > 
N> > Modified:
N> >  head/share/man/man9/timeout.9
N> >  head/sys/kern/kern_timeout.c
N> >  head/sys/kern/subr_sleepqueue.c
N> >  head/sys/sys/callout.h
N> 
N> Should __FreeBSD_version be bumped for the change?

No. We consider the new behavior more matching the documentation rather than
old one.

-- 
Totus tuus, Glebius.
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to