aboutsummaryrefslogtreecommitdiff
path: root/sys/fs
diff options
context:
space:
mode:
authorRick Macklem <rmacklem@FreeBSD.org>2011-05-23 22:31:42 +0000
committerRick Macklem <rmacklem@FreeBSD.org>2011-05-23 22:31:42 +0000
commit484c842d57529159f014f94f2a544cebc7d6e123 (patch)
tree8c6a1edbd6868180443f646249d49c33d1329c77 /sys/fs
parente7b49f6068bb73e55f7c57c59be93bde52c32e20 (diff)
downloadsrc-484c842d57529159f014f94f2a544cebc7d6e123.tar.gz
src-484c842d57529159f014f94f2a544cebc7d6e123.zip
Set the MNT_NFS4ACLS flag for an NFSv4 client mount
if the NFSv4 server supports it. Requested by trasz. MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=222233
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/nfsclient/nfs_clvfsops.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/fs/nfsclient/nfs_clvfsops.c b/sys/fs/nfsclient/nfs_clvfsops.c
index 8dc5b0b4b0f2..84725dde0e16 100644
--- a/sys/fs/nfsclient/nfs_clvfsops.c
+++ b/sys/fs/nfsclient/nfs_clvfsops.c
@@ -79,6 +79,7 @@ FEATURE(nfscl, "NFSv4 client");
extern int nfscl_ticks;
extern struct timeval nfsboottime;
extern struct nfsstats newnfsstats;
+extern int nfsrv_useacl;
MALLOC_DEFINE(M_NEWNFSREQ, "newnfsclient_req", "New NFS request header");
MALLOC_DEFINE(M_NEWNFSMNT, "newnfsmnt", "New NFS mount struct");
@@ -1331,6 +1332,15 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct sockaddr *nam,
if (argp->flags & NFSMNT_NFSV3)
ncl_fsinfo(nmp, *vpp, cred, td);
+ /* Mark if the mount point supports NFSv4 ACLs. */
+ if ((argp->flags & NFSMNT_NFSV4) != 0 && nfsrv_useacl != 0 &&
+ ret == 0 &&
+ NFSISSET_ATTRBIT(&nfsva.na_suppattr, NFSATTRBIT_ACL)) {
+ MNT_ILOCK(mp);
+ mp->mnt_flag |= MNT_NFS4ACLS;
+ MNT_IUNLOCK(mp);
+ }
+
/*
* Lose the lock but keep the ref.
*/