line up comment for ndo_bridge_getlink
[pandora-kernel.git] / fs / nfs / dns_resolve.c
index ca4b11e..9455270 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <linux/module.h>
 #include <linux/sunrpc/clnt.h>
+#include <linux/sunrpc/addr.h>
 #include <linux/dns_resolver.h>
 #include "dns_resolve.h"
 
@@ -42,6 +43,7 @@ EXPORT_SYMBOL_GPL(nfs_dns_resolve_name);
 #include <linux/seq_file.h>
 #include <linux/inet.h>
 #include <linux/sunrpc/clnt.h>
+#include <linux/sunrpc/addr.h>
 #include <linux/sunrpc/cache.h>
 #include <linux/sunrpc/svcauth.h>
 #include <linux/sunrpc/rpc_pipe_fs.h>
@@ -142,7 +144,7 @@ static int nfs_dns_upcall(struct cache_detail *cd,
 
        ret = nfs_cache_upcall(cd, key->hostname);
        if (ret)
-               ret = sunrpc_cache_pipe_upcall(cd, ch, nfs_dns_request);
+               ret = sunrpc_cache_pipe_upcall(cd, ch);
        return ret;
 }
 
@@ -351,60 +353,47 @@ 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_request  = nfs_dns_request,
+       .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);
+
+       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:
+       cache_destroy_net(nn->nfs_dns_resolve, net);
        return err;
 }
 
 void nfs_dns_resolver_cache_destroy(struct net *net)
 {
        struct nfs_net *nn = net_generic(net, nfs_net_id);
-       struct cache_detail *cd = nn->nfs_dns_resolve;
 
-       nfs_cache_unregister_net(net, cd);
-       nfs_cache_destroy(cd);
-       kfree(cd->hash_table);
-       kfree(cd);
+       nfs_cache_unregister_net(net, nn->nfs_dns_resolve);
+       cache_destroy_net(nn->nfs_dns_resolve, net);
 }
 
 static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event,