[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 02/15] xen: tracing: avoid checking tb_init_done multiple times.



On Wed, 2017-06-07 at 08:46 -0600, Jan Beulich wrote:
> > > > On 01.06.17 at 19:33, <dario.faggioli@xxxxxxxxxx> wrote:
> > 
> > In fact, when calling __trace_var() directly, we can
> > assume that tb_init_done has been checked to be true,
> > and the if is hence redundant.
> 
> The "assume" here worries me: What if there's a single place
> somewhere that a grep can't easily find where no check is
> present? Is it certain that ...
> 
> > @@ -691,7 +691,8 @@ void __trace_var(u32 event, bool_t cycles,
> > unsigned int extra,
> >      unsigned int extra_word;
> >      bool_t started_below_highwater;
> >  
> > -    if( !tb_init_done )
> > +    /* If the event is not interesting, bail, as early as possible
> > */
> > +    if ( (tb_event_mask & event) == 0 )
> >          return;
> 
> ... this check would always be false then (i.e. tb_event_mask is
> always zero) in that case?
> 
As said when replying to Andrew, I originally put an ASSERT() there.

That made me realize, though, that the existing if(!tb_init_done) is
ineffective and potentially racy (or, if you want to be kind "it's a
best effort kind of measure") already.

In fact, even right now, without my patches, we don't hold the tracing
lock when we execute that if. Nothing prevents tb_init_done to become 0
_right_after_ we saw it being 1 and decide to go ahead.

This, to me, looks like an even more compelling reason to remove it.
But I think I can improve the commit message so that it explains this
thing that I just said above too.

Thanks and Regards,
Dario
-- 
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.