Subject: Re: [PATCH 02/36] scsi, rcu: convert call_rcu(fc_rport_free_rcu) to kfree_rcu()

From: "Paul E. McKenney" <[email-masked]>
Date: Wed, 23 Mar 2011 06:30:48 -0700

On Wed, Mar 23, 2011 at 05:22:57AM -0600, Matthew Wilcox wrote:
> On Tue, Mar 22, 2011 at 11:50:14PM -0700, Paul E. McKenney wrote:
> > On Tue, Mar 22, 2011 at 10:28:33AM -0700, Robert Love wrote:
> > > On Thu, 2011-03-17 at 20:41 -0700, Lai Jiangshan wrote:
> > > > -	call_rcu(&rdata->rcu, fc_rport_free_rcu);
> > > > +	kfree_rcu(rdata, rcu);
> > > 
> > > I think this last line should be:
> > > 
> > > kfree_rcu(rdata, &rdata->rcu);
> > 
> > Hello, Robert,
> > 
> > I believe that it is correct as is.  The kfree_rcu() definition is as
> > follows:
> > 
> > #define kfree_rcu(ptr, rcu_head)					\
> > 	__kfree_rcu(&((ptr)->rcu_head), offsetof(typeof(*(ptr)), rcu_head))
> > 
> > Then __kfree_rcu() encodes the offset into the rcu_head so that it can
> > be handled properly at the end of the grace period.
> 
> To be fair to Robert, I had the same thought, but decided to check the
> definition of kfree_rcu before I made the same comment.  Unfortunately,
> the definition of kfree_rcu is still not in Linus' tree (and there's no
> indication in the patch series about where to find the definition).  It
> would have been better if kfree_rcu were patch 1/n in the series, then
> we'd've been able to review it more effectively.

Good point!  That said, it is a bit ugly no matter how we handle it
because any of the patches that have not received acked-bys will need
to go up through their respective maintainer trees.  Last time I had a
situation like this, it ended up stalling my commit stream for several
months, so was trying to separate them in order to avoid the stall.

But perhaps this is one of those situations where there is simply no
good way to handle the full series.  :-(

> Any idea when kfree_rcu will be submitted to Linus?

I have it queued, and it passes mild testing.  I therefore expect to
push it for the next merge window.

So, do you guys want to carry the patches for your subsystems, or are
you willing to ack this one so that I can push it via -tip?

							Thanx, Paul