nfsd: disable deferral for NFSv4
authorNeilBrown <neilb@suse.de>
Thu, 12 Aug 2010 07:04:07 +0000 (17:04 +1000)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 21 Sep 2010 21:02:27 +0000 (17:02 -0400)
Now that a slight delay in getting a reply to an upcall doesn't
require deferring of requests, request deferral for all NFSv4
requests - the concept doesn't really fit with the v4 model.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4proc.c

index 59ec449..0cdfd02 100644 (file)
@@ -1031,8 +1031,11 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,
        resp->cstate.session = NULL;
        fh_init(&resp->cstate.current_fh, NFS4_FHSIZE);
        fh_init(&resp->cstate.save_fh, NFS4_FHSIZE);
-       /* Use the deferral mechanism only for NFSv4.0 compounds */
-       rqstp->rq_usedeferral = (args->minorversion == 0);
+       /*
+        * Don't use the deferral mechanism for NFSv4; compounds make it
+        * too hard to avoid non-idempotency problems.
+        */
+       rqstp->rq_usedeferral = 0;
 
        /*
         * According to RFC3010, this takes precedence over all other errors.