vserver 2.0 rc7
[linux-2.6.git] / fs / nfsd / nfssvc.c
index 291dd8c..02ded7c 100644 (file)
@@ -60,7 +60,7 @@ struct nfsd_list {
        struct list_head        list;
        struct task_struct      *task;
 };
-struct list_head nfsd_list = LIST_HEAD_INIT(nfsd_list);
+static struct list_head nfsd_list = LIST_HEAD_INIT(nfsd_list);
 
 /*
  * Maximum number of nfsd processes
@@ -92,7 +92,9 @@ nfsd_svc(unsigned short port, int nrservs)
        
        /* Readahead param cache - will no-op if it already exists */
        error = nfsd_racache_init(2*nrservs);
-       nfs4_state_init();
+       if (error<0)
+               goto out;
+       error = nfs4_state_init();
        if (error<0)
                goto out;
        if (!nfsd_serv) {
@@ -256,6 +258,8 @@ nfsd(struct svc_rqst *rqstp)
                                break;
                err = signo;
        }
+       /* Clear signals before calling lockd_down() and svc_exit_thread() */
+       flush_signals(current);
 
        lock_kernel();
 
@@ -378,4 +382,6 @@ struct svc_program          nfsd_program = {
        .pg_name                = "nfsd",               /* program name */
        .pg_class               = "nfsd",               /* authentication class */
        .pg_stats               = &nfsd_svcstats,       /* version table */
+       .pg_authenticate        = &svc_set_client,      /* export authentication */
+
 };