« Return to Thread: callout(9) and Giant lock

Re: callout(9) and Giant lock

by John Baldwin :: Rate this Message:

Reply to Author | View in Thread

On Sunday 28 June 2009 11:57:05 am Robert Watson wrote:

>
> On Sun, 28 Jun 2009, Sebastian Huber wrote:
>
> > suppose that a certain time event triggered several callout functions. What
> > happens if the first of these callout functions blocks on the Giant lock?
> > Does this delay all further callout functions until the Giant lock is
> > available for the first callout function? What happens if one of the callout
> > function blocks forever? Does this deadlock the system?
>
> 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.

--
John Baldwin
_______________________________________________
freebsd-hackers@... mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@..."

 « Return to Thread: callout(9) and Giant lock