All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Stanislav Kinsbursky <skinsbursky@parallels.com>
Cc: Trond.Myklebust@netapp.com, linux-nfs@vger.kernel.org,
	xemul@parallels.com, neilb@suse.de, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, jbottomley@parallels.com,
	davem@davemloft.net, devel@openvz.org
Subject: Re: [PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup
Date: Thu, 19 Jan 2012 11:37:22 -0500	[thread overview]
Message-ID: <20120119163722.GE527@fieldses.org> (raw)
In-Reply-To: <20120119144931.9957.78601.stgit@localhost6.localdomain6>

On Thu, Jan 19, 2012 at 06:49:31PM +0400, Stanislav Kinsbursky wrote:
> This patch converts ip_map_cache per network namespace implemenetation to the
> same view, as other caches done in the series.
> Besides generalization, code becomes shorter with this patch.

Again, isnt' it ip_map_cache, and not one of the dynamically created
cache details, that's being passed to the lookup routines?

I may just be confused....

--b.

> 
> Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
> 
> ---
>  net/sunrpc/svcauth_unix.c |   71 +++++++++++++++++++--------------------------
>  1 files changed, 30 insertions(+), 41 deletions(-)
> 
> diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
> index c753ae4..0a50788 100644
> --- a/net/sunrpc/svcauth_unix.c
> +++ b/net/sunrpc/svcauth_unix.c
> @@ -211,7 +211,7 @@ static int ip_map_parse(struct cache_detail *cd,
>  	len = qword_get(&mesg, buf, mlen);
>  	if (len <= 0) return -EINVAL;
>  
> -	if (rpc_pton(&init_net, buf, len, &address.sa, sizeof(address)) == 0)
> +	if (rpc_pton(cd->net, buf, len, &address.sa, sizeof(address)) == 0)
>  		return -EINVAL;
>  	switch (address.sa.sa_family) {
>  	case AF_INET:
> @@ -875,56 +875,45 @@ struct auth_ops svcauth_unix = {
>  	.set_client	= svcauth_unix_set_client,
>  };
>  
> +struct cache_detail ip_map_cache = {
> +	.owner		= THIS_MODULE,
> +	.hash_size	= IP_HASHMAX,
> +	.name		= "auth.unix.ip",
> +	.cache_put	= ip_map_put,
> +	.cache_upcall	= ip_map_upcall,
> +	.cache_parse	= ip_map_parse,
> +	.cache_show	= ip_map_show,
> +	.match		= ip_map_match,
> +	.init		= ip_map_init,
> +	.update		= update,
> +	.alloc		= ip_map_alloc,
> +};
> +
>  int ip_map_cache_create(struct net *net)
>  {
> -	int err = -ENOMEM;
> -	struct cache_detail *cd;
> -	struct cache_head **tbl;
>  	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
> +	struct cache_detail *cd;
> +	int err;
>  
> -	cd = kzalloc(sizeof(struct cache_detail), GFP_KERNEL);
> -	if (cd == NULL)
> -		goto err_cd;
> -
> -	tbl = kzalloc(IP_HASHMAX * sizeof(struct cache_head *), GFP_KERNEL);
> -	if (tbl == NULL)
> -		goto err_tbl;
> -
> -	cd->owner = THIS_MODULE,
> -	cd->hash_size = IP_HASHMAX,
> -	cd->hash_table = tbl,
> -	cd->name = "auth.unix.ip",
> -	cd->cache_put = ip_map_put,
> -	cd->cache_upcall = ip_map_upcall,
> -	cd->cache_parse = ip_map_parse,
> -	cd->cache_show = ip_map_show,
> -	cd->match = ip_map_match,
> -	cd->init = ip_map_init,
> -	cd->update = update,
> -	cd->alloc = ip_map_alloc,
> -
> +	cd = cache_create_net(&ip_map_cache, net);
> +	if (IS_ERR(cd))
> +		return PTR_ERR(cd);
>  	err = cache_register_net(cd, net);
> -	if (err)
> -		goto err_reg;
> -
> +	if (err) {
> +		cache_destroy_net(cd, net);
> +		return err;
> +	}
>  	sn->ip_map_cache = cd;
>  	return 0;
> -
> -err_reg:
> -	kfree(tbl);
> -err_tbl:
> -	kfree(cd);
> -err_cd:
> -	return err;
>  }
>  
>  void ip_map_cache_destroy(struct net *net)
>  {
> -	struct sunrpc_net *sn;
> +	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
> +	struct cache_detail *cd = sn->ip_map_cache;
>  
> -	sn = net_generic(net, sunrpc_net_id);
> -	cache_purge(sn->ip_map_cache);
> -	cache_unregister_net(sn->ip_map_cache, net);
> -	kfree(sn->ip_map_cache->hash_table);
> -	kfree(sn->ip_map_cache);
> +	sn->ip_map_cache = NULL;
> +	cache_purge(cd);
> +	cache_unregister_net(cd, net);
> +	cache_destroy_net(cd, net);
>  }
> 

  reply	other threads:[~2012-01-19 16:37 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-19 14:48 [PATCH 0/5] SUNRPC: make caches network namespace aware Stanislav Kinsbursky
2012-01-19 14:49 ` [PATCH 1/5] SUNRPC: cache creation and destruction routines introduced Stanislav Kinsbursky
2012-01-19 14:49 ` [PATCH 2/5] SUNRPC: create unix gid cache per network namespace Stanislav Kinsbursky
2012-01-19 16:24   ` J. Bruce Fields
2012-01-19 17:00     ` Stanislav Kinsbursky
2012-01-19 14:49 ` [PATCH 3/5] SUNRPC: create GSS auth " Stanislav Kinsbursky
2012-01-19 16:31   ` J. Bruce Fields
2012-01-19 16:31     ` J. Bruce Fields
2012-01-19 17:04     ` Stanislav Kinsbursky
2012-01-19 17:40       ` J. Bruce Fields
2012-01-19 17:51         ` Stanislav Kinsbursky
2012-01-19 14:49 ` [PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup Stanislav Kinsbursky
2012-01-19 14:49   ` Stanislav Kinsbursky
2012-01-19 16:37   ` J. Bruce Fields [this message]
2012-01-19 17:10     ` Stanislav Kinsbursky
2012-01-19 22:21       ` J. Bruce Fields
2012-01-19 22:21         ` J. Bruce Fields
2012-01-19 14:49 ` [PATCH 5/5] SUNRPC: generic cache register routines removed Stanislav Kinsbursky
2012-01-19 15:19 ` [PATCH 0/5] SUNRPC: make caches network namespace aware Trond Myklebust
2012-01-19 15:19   ` Trond Myklebust
2012-01-19 15:31   ` Stanislav Kinsbursky
2012-01-19 15:34     ` Myklebust, Trond
2012-01-19 15:34       ` Myklebust, Trond
2012-01-19 15:34       ` Myklebust, Trond
2012-01-19 15:43       ` Stanislav Kinsbursky
2012-01-19 15:47     ` bfields
2012-01-19 16:01       ` Stanislav Kinsbursky
2012-01-19 17:34       ` Myklebust, Trond
2012-01-19 17:34         ` Myklebust, Trond
2012-01-19 17:34         ` Myklebust, Trond
2012-01-19 22:40   ` J. Bruce Fields
2012-01-19 22:40     ` J. Bruce Fields
2012-01-19 17:14 ` Stanislav Kinsbursky

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=20120119163722.GE527@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=Trond.Myklebust@netapp.com \
    --cc=davem@davemloft.net \
    --cc=devel@openvz.org \
    --cc=jbottomley@parallels.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=netdev@vger.kernel.org \
    --cc=skinsbursky@parallels.com \
    --cc=xemul@parallels.com \
    /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.