Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752583Ab1CWGuf (ORCPT ); Wed, 23 Mar 2011 02:50:35 -0400 Received: from e39.co.us.ibm.com ([32.97.110.160]:51810 "EHLO e39.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752285Ab1CWGud (ORCPT ); Wed, 23 Mar 2011 02:50:33 -0400 Date: Tue, 22 Mar 2011 23:50:14 -0700 From: "Paul E. McKenney" To: Robert Love Cc: Lai Jiangshan , Ingo Molnar , Jens Axboe , "James E.J. Bottomley" , Neil Horman , "David S. Miller" , Alexey Kuznetsov , "Pekka Savola (ipv6)" , James Morris , Hideaki YOSHIFUJI , Patrick McHardy , Eric Dumazet , Stephen Hemminger , Tejun Heo , Jarek Poplawski , "linux-kernel@vger.kernel.org" , "devel@open-fcoe.org" , "linux-scsi@vger.kernel.org" , "netdev@vger.kernel.org" Subject: Re: [PATCH 02/36] scsi,rcu: convert call_rcu(fc_rport_free_rcu) to kfree_rcu() Message-ID: <20110323065014.GU2322@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <4D82D071.5020703@cn.fujitsu.com> <4D82D3FF.2080303@cn.fujitsu.com> <4D82D45A.30102@cn.fujitsu.com> <1300814913.19083.427.camel@fritz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1300814913.19083.427.camel@fritz> User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2126 Lines: 62 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: > > > > The rcu callback fc_rport_free_rcu() just calls a kfree(), > > so we use kfree_rcu() instead of the call_rcu(fc_rport_free_rcu). > > > > Signed-off-by: Lai Jiangshan > > --- > > drivers/scsi/libfc/fc_rport.c | 14 +------------- > > 1 files changed, 1 insertions(+), 13 deletions(-) > > > > diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c > > index a7175ad..29abab0 100644 > > --- a/drivers/scsi/libfc/fc_rport.c > > +++ b/drivers/scsi/libfc/fc_rport.c > > @@ -151,18 +151,6 @@ static struct fc_rport_priv *fc_rport_create(struct fc_lport *lport, > > } > > > > /** > > - * fc_rport_free_rcu() - Free a remote port > > - * @rcu: The rcu_head structure inside the remote port > > - */ > > -static void fc_rport_free_rcu(struct rcu_head *rcu) > > -{ > > - struct fc_rport_priv *rdata; > > - > > - rdata = container_of(rcu, struct fc_rport_priv, rcu); > > - kfree(rdata); > > -} > > - > > -/** > > * fc_rport_destroy() - Free a remote port after last reference is released > > * @kref: The remote port's kref > > */ > > @@ -171,7 +159,7 @@ static void fc_rport_destroy(struct kref *kref) > > struct fc_rport_priv *rdata; > > > > rdata = container_of(kref, struct fc_rport_priv, kref); > > - 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. Thanx, Paul -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/