summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2017-05-07 19:47:50 +0000
committerrmacklem <rmacklem@FreeBSD.org>2017-05-07 19:47:50 +0000
commit31071e591bb2bcd0bb7e59fc4b223d717f945ab9 (patch)
tree29594005e4c1c7b013cd2783217db633e2120e96 /sys/fs
parentb7eba353b3a54b13fbf39da1190ead8ed95c0ccc (diff)
downloadFreeBSD-src-31071e591bb2bcd0bb7e59fc4b223d717f945ab9.zip
FreeBSD-src-31071e591bb2bcd0bb7e59fc4b223d717f945ab9.tar.gz
MFC: r317236
Fix the setting of atime for Linux client NFSv4 mounts. The FreeBSD NFSv4 server did not set the attribute bit for TimeAccess in the reply to an Open with exclusive_create, as required by the RFCs. (This is required since the FreeBSD NFS server stores the create_verifier in the va_atime attribute.) As such, the Linux NFSv4 client did not set the TimeAccess (atime) in the Setattr done in an RPC after the one with the Open/exclusive_create. This patch fixes the server to set the TimeAccess bit in the reply. I believe that storing the create_verifier in an extended attribute for file systems that support extended attributes might be a good idea, but I will wait for a discussion of this on the freebsd-fs@ email list before considering committing a patch to do this.
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/nfsserver/nfs_nfsdport.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdport.c
index 0704808..49e9a22 100644
--- a/sys/fs/nfsserver/nfs_nfsdport.c
+++ b/sys/fs/nfsserver/nfs_nfsdport.c
@@ -1436,7 +1436,9 @@ nfsvno_open(struct nfsrv_descript *nd, struct nameidata *ndp,
vput(ndp->ni_vp);
ndp->ni_vp = NULL;
nd->nd_repstat = NFSERR_NOTSUPP;
- }
+ } else
+ NFSSETBIT_ATTRBIT(attrbitp,
+ NFSATTRBIT_TIMEACCESS);
} else {
nfsrv_fixattr(nd, ndp->ni_vp, nvap,
aclp, p, attrbitp, exp);
OpenPOWER on IntegriCloud