diff options
| author | Stanislav Kinsbursky <skinsbursky@parallels.com> | 2013-02-04 14:02:35 +0300 | 
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2013-02-15 10:43:12 -0500 | 
| commit | 483479c26a65e5f0cc95e9324f313bc95c7dc6fd (patch) | |
| tree | c5b72368672a50a7a43cb3e2f4e70c089bc0a360 /fs/nfs/dns_resolve.c | |
| parent | e56a316214d0f1e2446fa7a717309f9414564d9d (diff) | |
NFS: use SUNRPC cache creation and destruction helper for DNS cache
This cache was the first containerized and doesn't use net-aware cache
creation and destruction helpers.
This is a cleanup patch which just makes code looks clearer and reduce amount
of lines of code.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfs/dns_resolve.c')
| -rw-r--r-- | fs/nfs/dns_resolve.c | 60 | 
1 files changed, 25 insertions, 35 deletions
| diff --git a/fs/nfs/dns_resolve.c b/fs/nfs/dns_resolve.c index 62c8c4127219..d5ce5f4f0f5f 100644 --- a/fs/nfs/dns_resolve.c +++ b/fs/nfs/dns_resolve.c @@ -353,48 +353,39 @@ ssize_t nfs_dns_resolve_name(struct net *net, char *name,  }  EXPORT_SYMBOL_GPL(nfs_dns_resolve_name); +static struct cache_detail nfs_dns_resolve_template = { +	.owner		= THIS_MODULE, +	.hash_size	= NFS_DNS_HASHTBL_SIZE, +	.name		= "dns_resolve", +	.cache_put	= nfs_dns_ent_put, +	.cache_upcall	= nfs_dns_upcall, +	.cache_parse	= nfs_dns_parse, +	.cache_show	= nfs_dns_show, +	.match		= nfs_dns_match, +	.init		= nfs_dns_ent_init, +	.update		= nfs_dns_ent_update, +	.alloc		= nfs_dns_ent_alloc, +}; + +  int nfs_dns_resolver_cache_init(struct net *net)  { -	int err = -ENOMEM; +	int err;  	struct nfs_net *nn = net_generic(net, nfs_net_id); -	struct cache_detail *cd; -	struct cache_head **tbl; -	cd = kzalloc(sizeof(struct cache_detail), GFP_KERNEL); -	if (cd == NULL) -		goto err_cd; - -	tbl = kzalloc(NFS_DNS_HASHTBL_SIZE * sizeof(struct cache_head *), -			GFP_KERNEL); -	if (tbl == NULL) -		goto err_tbl; - -	cd->owner = THIS_MODULE, -	cd->hash_size = NFS_DNS_HASHTBL_SIZE, -	cd->hash_table = tbl, -	cd->name = "dns_resolve", -	cd->cache_put = nfs_dns_ent_put, -	cd->cache_upcall = nfs_dns_upcall, -	cd->cache_parse = nfs_dns_parse, -	cd->cache_show = nfs_dns_show, -	cd->match = nfs_dns_match, -	cd->init = nfs_dns_ent_init, -	cd->update = nfs_dns_ent_update, -	cd->alloc = nfs_dns_ent_alloc, - -	nfs_cache_init(cd); -	err = nfs_cache_register_net(net, cd); +	nn->nfs_dns_resolve = cache_create_net(&nfs_dns_resolve_template, net); +	if (IS_ERR(nn->nfs_dns_resolve)) +		return PTR_ERR(nn->nfs_dns_resolve); + +	nfs_cache_init(nn->nfs_dns_resolve); +	err = nfs_cache_register_net(net, nn->nfs_dns_resolve);  	if (err)  		goto err_reg; -	nn->nfs_dns_resolve = cd;  	return 0;  err_reg: -	nfs_cache_destroy(cd); -	kfree(cd->hash_table); -err_tbl: -	kfree(cd); -err_cd: +	nfs_cache_destroy(nn->nfs_dns_resolve); +	cache_destroy_net(nn->nfs_dns_resolve, net);  	return err;  } @@ -405,8 +396,7 @@ void nfs_dns_resolver_cache_destroy(struct net *net)  	nfs_cache_unregister_net(net, cd);  	nfs_cache_destroy(cd); -	kfree(cd->hash_table); -	kfree(cd); +	cache_destroy_net(nn->nfs_dns_resolve, net);  }  static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event, | 
