callout(9) and Giant lock
John Baldwin
jhb at freebsd.org
Mon Jul 13 19:26:28 UTC 2009
On Monday 13 July 2009 2:49:24 pm Robert N. M. Watson wrote:
>
> On 13 Jul 2009, at 19:17, John Baldwin wrote:
>
> >> Callouts are marked as MPSAFE or non-MPSAFE when registered. If
> >> non-MPSAFE,
> >> we will acquire Giant automatically for the callout, but I believe
> >> we'll also
> >> try and sort non-MPSAFE callouts behind MPSAFE ones in execution
> >> order to
> >> minimize latency for MPSAFE callouts. Most callouts acquire locks
> >> of some
> >> sort, and stalling any callout indefinitely will stall the entire
> >> callout
> >> thread indefinitely, which in turn could lead to a variety of odd
> >> behaviors
> >> and potentially (although not necessarily) deadlock.
> >
> > FWIW, we do not actually sort the callouts in this manner, so all
> > callouts
> > will be blocked until Giant is acquired.
>
> I must have been remembering a proposed change -- as you say, it's
> certainly not in kern_timeout.c. However, I'd rather just eliminate
> support for Giant in callouts in 9.x than try to further facilitate
> them :-)
Agreed. :)
--
John Baldwin
More information about the freebsd-hackers
mailing list