In a few places on the server, I had to change code that looked like: if (rqstp->rq_vers == 3) /* NFSv3 behavior */ else /* NFSv2 behavior */ to: if (rqstp->rq_vers > 2) /* NFSv3 behavior */ else /* NFSv2 behavior */ so that we would get the NFSv3 behavior, not the NFSv2 behavior, in NFSv4. This patch collects all changes of this type. --- old/fs/nfsd/nfsfh.c Sun Aug 11 22:53:12 2002 +++ new/fs/nfsd/nfsfh.c Sun Aug 11 22:53:33 2002 @@ -107,7 +107,7 @@ fh_verify(struct svc_rqst *rqstp, struct int fsid = 0; error = nfserr_stale; - if (rqstp->rq_vers == 3) + if (rqstp->rq_vers > 2) error = nfserr_badhandle; if (fh->fh_version == 1) { @@ -171,7 +171,7 @@ fh_verify(struct svc_rqst *rqstp, struct * Look up the dentry using the NFS file handle. */ error = nfserr_stale; - if (rqstp->rq_vers == 3) + if (rqstp->rq_vers > 2) error = nfserr_badhandle; if (fh->fh_version != 1) { --- old/fs/nfsd/vfs.c Thu Aug 1 16:16:20 2002 +++ new/fs/nfsd/vfs.c Sun Aug 11 22:53:33 2002 @@ -1401,7 +1401,7 @@ nfsd_readdir(struct svc_rqst *rqstp, str eof = !cd.eob; if (cd.offset) { - if (rqstp->rq_vers == 3) + if (rqstp->rq_vers > 2) (void)xdr_encode_hyper(cd.offset, file.f_pos); else *cd.offset = htonl(file.f_pos);