All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	akpm@linux-foundation.org, Ingo Molnar <mingo@elte.hu>,
	linux-kernel@vger.kernel.org, laijs@cn.fujitsu.com,
	dipankar@in.ibm.com, josh@joshtriplett.org, dvhltc@us.ibm.com,
	niv@us.ibm.com, peterz@infradead.org, rostedt@goodmis.org,
	Valdis.Kletnieks@vt.edu, dhowells@redhat.com,
	eric.dumazet@gmail.com, adobriyan@gmail.com
Subject: Re: [patch 0/6] rcu head debugobjects
Date: Sat, 27 Mar 2010 21:30:47 -0700	[thread overview]
Message-ID: <20100328043047.GT2343@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1003280339590.3147@localhost.localdomain>

On Sun, Mar 28, 2010 at 04:07:10AM +0200, Thomas Gleixner wrote:
> B1;2005;0cOn Sat, 27 Mar 2010, Paul E. McKenney wrote:
> > 
> > o	Patch 4/6 looks good to me, and given that Thomas hasn't
> > 	complained, I am guessing that he is OK with it.
> 
> Looks sane at the first glance. Will go over it in detail tomorrow.
> 
> > o	Patch 6/6: Would it be possible to use the object_is_on_stack()
> > 	function defined in include/linux/sched.h instead of passing
> > 	in the flag on_stack to bdi_work_init()?  It looks like
> > 	fs/fs-writeback.c already includes include/linux/sched.h, so
> > 	shouldn't be a problem from a #include-hell viewpoint.
> 
> Well, I'm a bit wary about that. The reason is that we really want
> the annotation of:
> 
>        init_on_stack();
>        ....
>        destroy_on_stack();
> 
> instead of the confusing:
> 
>        init();
>        ....
>        destroy_on_stack();
> 
> So having an automatism in the bdi_work_init() function will people
> make forget to put the destroy_on_stack() annotation into it.
> 
> The flag is horrible as well. How about this:
> 
> /* helper function, do not use in code ! */
> __bdi_work_init(....., onstack)
> {
> 	....
> 	if (on_stack) {
> 	   work.state |= WS_ONSTACK;
> 	   init_rcu_head_on_stack(&work.rcu_head);
> 	} else {
> 	....
> }
> 
> See, how this moves also the "work.state |= WS_ONSTACK;" line out of
> the calling code.
> 
> bdi_work_init(...)
> {
> 	 __bdi_work_init(...., false);
> }
> 
> bdi_work_init_on_stack(...)
> {
> 	 __bdi_work_init(...., true);
> }
> 
> 
> out of the code.
> 
> To make it complete, please do not use the asymmetric:
> 
>    destroy_rcu_head_on_stack(&work.rcu_head);
> 
> Create a helper function:
> 
> bdi_destroy_work_on_stack(...)
> {
>    destroy_rcu_head_on_stack(work->rcu_head);
> }    
> 
> That makes it way more readable and we did that with the other on
> stack initializers as well.

Hello, Thomas,

I must defer to you on this one.  ;-)

							Thanx, Paul

  reply	other threads:[~2010-03-28  4:30 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-27 15:32 [patch 0/6] rcu head debugobjects Mathieu Desnoyers
2010-03-27 15:32 ` [patch 1/6] commit 501fdb3aeeb2444f86d289a4a044cf7c8fbc17df Author: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Date: Sat Mar 27 10:52:11 2010 -0400 Mathieu Desnoyers
2010-03-27 15:32 ` [patch 2/6] commit afd066d60b77e28651bb8323fc8cfcedacc5cbf8 Author: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Date: Sat Mar 27 10:53:30 " Mathieu Desnoyers
2010-03-27 15:32 ` [patch 3/6] commit 418b6f2c2ddba7c91d1186b68618092910260c32 Author: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Date: Sat Mar 27 11:05:38 " Mathieu Desnoyers
2010-03-27 15:32 ` [patch 4/6] Debugobjects transition check Mathieu Desnoyers
2010-03-27 15:32 ` [patch 5/6] tree/tiny rcu: Add debug RCU head objects (v4) Mathieu Desnoyers
2010-03-27 15:32 ` [patch 6/6] kernel call_rcu usage: initialize rcu_head structures (v2) Mathieu Desnoyers
2010-03-27 15:40 ` [patch 0/6] rcu head debugobjects David Miller
2010-03-27 22:46 ` Paul E. McKenney
2010-03-27 23:14   ` Mathieu Desnoyers
2010-03-27 23:20     ` Mathieu Desnoyers
2010-03-27 23:43       ` Paul E. McKenney
2010-03-28  0:02         ` [RFC patch] extable and module add object is static Mathieu Desnoyers
2010-03-28  0:25           ` Paul E. McKenney
2010-03-29  1:39           ` Lai Jiangshan
2010-03-29  3:18             ` Mathieu Desnoyers
2010-03-29  8:53             ` Peter Zijlstra
2010-03-29 13:16               ` Mathieu Desnoyers
2010-03-29 13:55                 ` Tejun Heo
2010-03-29 14:03                   ` Mathieu Desnoyers
2010-03-29 13:39         ` [patch 0/6] rcu head debugobjects Mathieu Desnoyers
2010-03-29 14:53           ` Paul E. McKenney
2010-03-29 15:04             ` Mathieu Desnoyers
2010-03-29 16:01               ` Paul E. McKenney
2010-03-28  2:07   ` Thomas Gleixner
2010-03-28  4:30     ` Paul E. McKenney [this message]
2010-03-29  0:45     ` Mathieu Desnoyers

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=20100328043047.GT2343@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=dvhltc@us.ibm.com \
    --cc=eric.dumazet@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@elte.hu \
    --cc=niv@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /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.