summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2011-05-23 22:31:42 +0000
committerrmacklem <rmacklem@FreeBSD.org>2011-05-23 22:31:42 +0000
commite63c03c6e67071218c35c703f1c9d952d980b025 (patch)
tree8c6a1edbd6868180443f646249d49c33d1329c77 /sys/fs
parent364291c0f27be51027f7369c90d61505adcd0f0c (diff)
downloadFreeBSD-src-e63c03c6e67071218c35c703f1c9d952d980b025.zip
FreeBSD-src-e63c03c6e67071218c35c703f1c9d952d980b025.tar.gz
Set the MNT_NFS4ACLS flag for an NFSv4 client mount
if the NFSv4 server supports it. Requested by trasz. MFC after: 2 weeks
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 8dc5b0b..84725dd 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.
*/
OpenPOWER on IntegriCloud