svn commit: r348745 - head/sys/net

Mark Johnston markj at freebsd.org
Thu Jun 6 17:43:46 UTC 2019


On Thu, Jun 06, 2019 at 10:13:13AM -0700, John Baldwin wrote:
> On 6/6/19 9:22 AM, Mark Johnston wrote:
> > Author: markj
> > Date: Thu Jun  6 16:22:29 2019
> > New Revision: 348745
> > URL: https://svnweb.freebsd.org/changeset/base/348745
> > 
> > Log:
> >   Conditionalize an in_epoch() call on INVARIANTS.
> >   
> >   Its result is only used to determine whether to perform further
> >   INVARIANTS-only checks.  Remove a stale comment while here.
> >   
> >   Submitted by:	Sebastian Huber <sebastian.huber at embedded-brains.de>
> >   MFC after:	1 week
> > 
> > Modified:
> >   head/sys/net/if_lagg.c
> > 
> > Modified: head/sys/net/if_lagg.c
> > ==============================================================================
> > --- head/sys/net/if_lagg.c	Thu Jun  6 16:20:50 2019	(r348744)
> > +++ head/sys/net/if_lagg.c	Thu Jun  6 16:22:29 2019	(r348745)
> > @@ -1955,12 +1955,10 @@ lagg_link_active(struct lagg_softc *sc, struct lagg_po
> >  	 * Search a port which reports an active link state.
> >  	 */
> >  
> > -	/*
> > -	 * This is called with either LAGG_RLOCK() held or
> > -	 * LAGG_XLOCK(sc) held.
> > -	 */
> > +#ifdef INVARIANTS
> >  	if (!in_epoch(net_epoch_preempt))
> >  		LAGG_XLOCK_ASSERT(sc);
> > +#endif
> 
> FWIW, the comment wasn't stale but on purpose (I added it when I added the check).
> The idea is to be the equivalent of
> 
> assert(in_epoch(net_epoch_preempt) || lagg_xlocked(sc))
> 
> However, I couldn't write it that way, so I use LAGG_XLOCK_ASSERT when !in_epoch
> returns false.  

We could add

#ifdef INVARIANTS
#define LAGG_ASSERT_LOCKED(_sc) (sx_xlocked(&(_sc)->sc_sx) || in_epoch(net_epoch_preempt))
#else
#define LAGG_ASSERT_LOCKED(_sc)
#endif

> Note that LAGG_RLOCK == epoch_enter, hence why the comment isn't stale.

I noticed that, but thought it was oddly phrased and decided it was
stale without checking when the comment was added.  I re-added it.


More information about the svn-src-all mailing list