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

From: Matthew Wilcox <[email-masked]>
Date: Wed, 23 Mar 2011 05:22:57 -0600

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.

Any idea when kfree_rcu will be submitted to Linus?

-- 
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."