On 6/6/19 10:43 AM, Mark Johnston wrote:
> 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.hu...@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

Hmm, ok I guess.  I just like using sx_assert when possible as you get line 
numbers,
etc.  Maybe MPASS would work though since it does that.  You also don't need the
extra #ifdef in that case either:

#define LAGG_ASSERT_LOCKED(_sc) MPASS(sx_xlocked(&(_sc)->sc_sx) || 
in_epoch(net_epoch_preempt))

-- 
John Baldwin
_______________________________________________
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