vserver 1.9.5.x5
[linux-2.6.git] / fs / nfsd / nfssvc.c
index b783620..291dd8c 100644 (file)
@@ -54,7 +54,7 @@ struct timeval                        nfssvc_boot;
 static struct svc_serv                 *nfsd_serv;
 static atomic_t                        nfsd_busy;
 static unsigned long           nfsd_last_call;
-static spinlock_t              nfsd_call_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(nfsd_call_lock);
 
 struct nfsd_list {
        struct list_head        list;
@@ -180,7 +180,6 @@ nfsd(struct svc_rqst *rqstp)
        /* Lock module and set up kernel thread */
        lock_kernel();
        daemonize("nfsd");
-       current->rlim[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY;
 
        /* After daemonize() this kernel thread shares current->fs
         * with the init process. We need to create files with a
@@ -328,6 +327,8 @@ nfsd_dispatch(struct svc_rqst *rqstp, u32 *statp)
 
        /* Now call the procedure handler, and encode NFS status. */
        nfserr = proc->pc_func(rqstp, rqstp->rq_argp, rqstp->rq_resp);
+       if (nfserr == nfserr_jukebox && rqstp->rq_vers == 2)
+               nfserr = nfserr_dropit;
        if (nfserr == nfserr_dropit) {
                dprintk("nfsd: Dropping request due to malloc failure!\n");
                nfsd_cache_update(rqstp, RC_NOCACHE, NULL);