Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 483479c2 authored by Stanislav Kinsbursky's avatar Stanislav Kinsbursky Committed by J. Bruce Fields
Browse files

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: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent e56a3162
Loading
Loading
Loading
Loading
+25 −35
Original line number Diff line number Diff line
@@ -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,