All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Ingo Molnar <mingo@elte.hu>, Steven Rostedt <rostedt@goodmis.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: Re: [PATCH] tracing: add trace_event_read_lock()
Date: Wed, 20 May 2009 02:24:53 +0200	[thread overview]
Message-ID: <20090520002451.GE6066@nowhere> (raw)
In-Reply-To: <4A1213E1.8050608@cn.fujitsu.com>

On Tue, May 19, 2009 at 10:05:21AM +0800, Lai Jiangshan wrote:
> Frederic Weisbecker wrote:
> > On Mon, May 18, 2009 at 07:35:34PM +0800, Lai Jiangshan wrote:
> >> I found that there is nothing to protect event_hash in
> >> ftrace_find_event().
> > 
> > 
> > 
> > Actually, rcu protects it, but not enough. We have neither
> > synchronize_rcu() nor rcu_read_lock.
> 
> We have no rcu_read_lock(), RCU can not protects it.
> 
> > 
> > So we protect against concurrent hlist accesses.
> > But the event can be removed when a module is unloaded,
> > and that can happen between the time we get the event output
> > callback and the time we actually use it.
> > 
> 
> [...]
> 
> > It could be more fine grained.
> 
> I think it's fine-grained enough, write-side(modules loading/unloading)
> is happened rarely. trace_event_read_lock() will not sleep very likely.
> 
> Thoughts?


Yeah, the write lock is a rare event, that's why I think
it's enough fine grained.

 
> > We could have a per event rwsem, and also place the
> > protected read section only in trace_print_entry() which is the only racy window.
> > 
> 
> print_trace_line() is the only racy window.
> So I just protect print_trace_line()(except __ftrace_dump())
> 
> I protect loops which call print_trace_line(), it
> reduces invoke-times:
> 
> trace_event_read_lock();
> while (...) {
> 	...
> 	print_trace_line();
> 	...
> }
> trace_event_read_unlock();



Yeah, I meant it could have been:

trace_event_read_lock();
print_trace_line();
trace_event_read_unlock();

It's more fine grained, but:

- the write lock path is rarely taken
- it would add more extra calls then more overhead

IMO this is fine as an rwsem design point of view.

But I have mixed feelings when I consider it could be
done using rcu. I will explain that in my next answer to
Paul and will wait for your comments.

Thanks!

Frederic.


> Thanks!
> Lai
> 
> > But I'm not sure it's that worthy since event removal is a rare thing.
> > 
> > So I guess this patch is fine.
> > 
> > 
> > 
> > 
> 
> 


  reply	other threads:[~2009-05-20  0:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-18 11:35 [PATCH] tracing: add trace_event_read_lock() Lai Jiangshan
2009-05-18 13:59 ` Frederic Weisbecker
2009-05-19  0:35   ` Paul E. McKenney
2009-05-19  5:15     ` Lai Jiangshan
2009-05-19 12:38       ` Paul E. McKenney
2009-05-20  0:59         ` Frederic Weisbecker
2009-05-20  4:38           ` Paul E. McKenney
2009-05-19  2:05   ` Lai Jiangshan
2009-05-20  0:24     ` Frederic Weisbecker [this message]
2009-05-20  2:25       ` Lai Jiangshan
2009-05-20 15:41         ` Paul E. McKenney
2009-05-20 16:04         ` Steven Rostedt
2009-05-27 22:34 ` [tip:tracing/core] " tip-bot for Lai Jiangshan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090520002451.GE6066@nowhere \
    --to=fweisbec@gmail.com \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.