Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Apr 2015 21:15:07 -0700
From:      Mark Johnston <markj@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: r280785 - in head/sys: kern netgraph/atm/sscop netgraph/atm/uni sys
Message-ID:  <20150410041507.GA12130@raichu>
In-Reply-To: <201503281250.t2SCoOkt020297@svn.freebsd.org>
References:  <201503281250.t2SCoOkt020297@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Mar 28, 2015 at 12:50:24PM +0000, Randall Stewart wrote:
> Author: rrs
> Date: Sat Mar 28 12:50:24 2015
> New Revision: 280785
> URL: https://svnweb.freebsd.org/changeset/base/280785
> 
> Log:
>   Change the callout to supply -1 to indicate we are not changing
>   CPU, also add protection against invalid CPU's as well as
>   split c_flags and c_iflags so that if a user plays with the active
>   flag (the one expected to be played with by callers in MPSAFE) without
>   a lock, it won't adversely affect the callout system by causing a corrupt
>   list. This also means that all callers need to use the macros and *not*
>   play with the falgs directly (like netgraph used to).
>   
>   Differential Revision: htts://reviews.freebsd.org/D1894
>   Reviewed by: .. timed out but looked at by jhb, imp, adrian hselasky
>                tested by hiren and netflix.
>   Sponsored by:	Netflix Inc.
> 
> Modified:
>   head/sys/kern/kern_timeout.c
>   head/sys/netgraph/atm/sscop/ng_sscop_cust.h
>   head/sys/netgraph/atm/uni/ng_uni_cust.h
>   head/sys/sys/_callout.h
>   head/sys/sys/callout.h
> 
> Modified: head/sys/kern/kern_timeout.c
> ==============================================================================
> --- head/sys/kern/kern_timeout.c	Sat Mar 28 12:23:15 2015	(r280784)
> +++ head/sys/kern/kern_timeout.c	Sat Mar 28 12:50:24 2015	(r280785)
> [...]
>  	/* 
>  	 * This flag used to be added by callout_cc_add, but the
>  	 * first time you call this we could end up with the
>  	 * wrong direct flag if we don't do it before we add.
>  	 */
>  	if (flags & C_DIRECT_EXEC) {
> -		c->c_flags |= CALLOUT_DIRECT;
> +		direct = 1;
> +	} else {
> +		direct = 0;
>  	}
> [...]

Hello,

With this change, C_DIRECT_EXEC appears to have stopped working. In
particular, I don't see any way for the CALLOUT_DIRECT flag to be set
anymore. Re-adding the deleted line above with s/c_flags/c_iflags/ fixes
the problem for me, but I have not tested it extensively.

-Mark



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150410041507.GA12130>