Message ID | 1359163872-1949-12-git-send-email-tj@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Jan 25, 2013 at 05:31:09PM -0800, Tejun Heo wrote: > idr_destroy() can destroy idr by itself and idr_remove_all() is being > deprecated. Drop reference to idr_remove_all(). Note that the code > wasn't completely correct before because idr_remove() on all entries > doesn't necessarily release all idr_layers which could lead to memory > leak. Seems fine, but actually this is client-side so I think you meant the cc to be to Trond. --b. > > Signed-off-by: Tejun Heo <tj@kernel.org> > Cc: "J. Bruce Fields" <bfields@fieldses.org> > Cc: linux-nfs@vger.kernel.org > --- > This patch depends on an earlier idr patch and given the trivial > nature of the patch, I think it would be best to route these together > through -mm. Please holler if there's any objection. > > Thanks. > > fs/nfs/client.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/fs/nfs/client.c b/fs/nfs/client.c > index 9f3c664..84d8eae 100644 > --- a/fs/nfs/client.c > +++ b/fs/nfs/client.c > @@ -197,7 +197,6 @@ error_0: > EXPORT_SYMBOL_GPL(nfs_alloc_client); > > #if IS_ENABLED(CONFIG_NFS_V4) > -/* idr_remove_all is not needed as all id's are removed by nfs_put_client */ > void nfs_cleanup_cb_ident_idr(struct net *net) > { > struct nfs_net *nn = net_generic(net, nfs_net_id); > -- > 1.8.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 2013-01-29 at 17:58 -0500, J. Bruce Fields wrote: > On Fri, Jan 25, 2013 at 05:31:09PM -0800, Tejun Heo wrote: > > idr_destroy() can destroy idr by itself and idr_remove_all() is being > > deprecated. Drop reference to idr_remove_all(). Note that the code > > wasn't completely correct before because idr_remove() on all entries > > doesn't necessarily release all idr_layers which could lead to memory > > leak. > > Seems fine, but actually this is client-side so I think you meant the cc > to be to Trond. Acked-by: Trond Myklebust <Trond.Myklebust@netapp.com> No problems whatsoever with removing a comment. :-) My worry is more about Tejun's comment that we did actually need a call to idr_remove_all() in the original code. Do we need to queue up a fix for the 3.8 and existing stable kernels? Cheers Trond > > Signed-off-by: Tejun Heo <tj@kernel.org> > > Cc: "J. Bruce Fields" <bfields@fieldses.org> > > Cc: linux-nfs@vger.kernel.org > > --- > > This patch depends on an earlier idr patch and given the trivial > > nature of the patch, I think it would be best to route these together > > through -mm. Please holler if there's any objection. > > > > Thanks. > > > > fs/nfs/client.c | 1 - > > 1 file changed, 1 deletion(-) > > > > diff --git a/fs/nfs/client.c b/fs/nfs/client.c > > index 9f3c664..84d8eae 100644 > > --- a/fs/nfs/client.c > > +++ b/fs/nfs/client.c > > @@ -197,7 +197,6 @@ error_0: > > EXPORT_SYMBOL_GPL(nfs_alloc_client); > > > > #if IS_ENABLED(CONFIG_NFS_V4) > > -/* idr_remove_all is not needed as all id's are removed by nfs_put_client */ > > void nfs_cleanup_cb_ident_idr(struct net *net) > > { > > struct nfs_net *nn = net_generic(net, nfs_net_id); > > -- > > 1.8.1 > >
Hello, Trond. On Wed, Jan 30, 2013 at 02:18:06AM +0000, Myklebust, Trond wrote: > My worry is more about Tejun's comment that we did actually need a call > to idr_remove_all() in the original code. Do we need to queue up a fix > for the 3.8 and existing stable kernels? IIUC, the only case where idr_layer is left around after idr_remove() on all elems is when the deletions lead to multi-level left-most collapse. Not sure whether the current code can actually hit that. No harm in adding idr_remove_all(), I guess. Thanks.
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 9f3c664..84d8eae 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c @@ -197,7 +197,6 @@ error_0: EXPORT_SYMBOL_GPL(nfs_alloc_client); #if IS_ENABLED(CONFIG_NFS_V4) -/* idr_remove_all is not needed as all id's are removed by nfs_put_client */ void nfs_cleanup_cb_ident_idr(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id);
idr_destroy() can destroy idr by itself and idr_remove_all() is being deprecated. Drop reference to idr_remove_all(). Note that the code wasn't completely correct before because idr_remove() on all entries doesn't necessarily release all idr_layers which could lead to memory leak. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: "J. Bruce Fields" <bfields@fieldses.org> Cc: linux-nfs@vger.kernel.org --- This patch depends on an earlier idr patch and given the trivial nature of the patch, I think it would be best to route these together through -mm. Please holler if there's any objection. Thanks. fs/nfs/client.c | 1 - 1 file changed, 1 deletion(-)