Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
[cascardo/linux.git] / fs / lockd / svc.c
index ec9e082..d1bb7ec 100644 (file)
@@ -36,6 +36,7 @@
 #include <linux/nfs.h>
 
 #include "netns.h"
+#include "procfs.h"
 
 #define NLMDBG_FACILITY                NLMDBG_SVC
 #define LOCKD_BUFSIZE          (1024 + NLMSVC_XDRSIZE)
@@ -304,13 +305,16 @@ static int lockd_start_svc(struct svc_serv *serv)
        svc_sock_update_bufs(serv);
        serv->sv_maxconn = nlm_max_connections;
 
-       nlmsvc_task = kthread_run(lockd, nlmsvc_rqst, "%s", serv->sv_name);
+       nlmsvc_task = kthread_create(lockd, nlmsvc_rqst, "%s", serv->sv_name);
        if (IS_ERR(nlmsvc_task)) {
                error = PTR_ERR(nlmsvc_task);
                printk(KERN_WARNING
                        "lockd_up: kthread_run failed, error=%d\n", error);
                goto out_task;
        }
+       nlmsvc_rqst->rq_task = nlmsvc_task;
+       wake_up_process(nlmsvc_task);
+
        dprintk("lockd_up: service started\n");
        return 0;
 
@@ -581,7 +585,7 @@ static int lockd_init_net(struct net *net)
        struct lockd_net *ln = net_generic(net, lockd_net_id);
 
        INIT_DELAYED_WORK(&ln->grace_period_end, grace_ender);
-       INIT_LIST_HEAD(&ln->grace_list);
+       INIT_LIST_HEAD(&ln->lockd_manager.list);
        spin_lock_init(&ln->nsm_clnt_lock);
        return 0;
 }
@@ -615,8 +619,15 @@ static int __init init_nlm(void)
        err = register_pernet_subsys(&lockd_net_ops);
        if (err)
                goto err_pernet;
+
+       err = lockd_create_procfs();
+       if (err)
+               goto err_procfs;
+
        return 0;
 
+err_procfs:
+       unregister_pernet_subsys(&lockd_net_ops);
 err_pernet:
 #ifdef CONFIG_SYSCTL
        unregister_sysctl_table(nlm_sysctl_table);
@@ -629,6 +640,7 @@ static void __exit exit_nlm(void)
 {
        /* FIXME: delete all NLM clients */
        nlm_shutdown_hosts();
+       lockd_remove_procfs();
        unregister_pernet_subsys(&lockd_net_ops);
 #ifdef CONFIG_SYSCTL
        unregister_sysctl_table(nlm_sysctl_table);