diff options
author | rmacklem <rmacklem@FreeBSD.org> | 2011-05-23 22:31:42 +0000 |
---|---|---|
committer | rmacklem <rmacklem@FreeBSD.org> | 2011-05-23 22:31:42 +0000 |
commit | e63c03c6e67071218c35c703f1c9d952d980b025 (patch) | |
tree | 8c6a1edbd6868180443f646249d49c33d1329c77 | |
parent | 364291c0f27be51027f7369c90d61505adcd0f0c (diff) | |
download | FreeBSD-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
-rw-r--r-- | sys/fs/nfsclient/nfs_clvfsops.c | 10 |
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. */ |