svn commit: r352270 - projects/nfsv42/sys/fs/nfsserver
Rick Macklem
rmacklem at FreeBSD.org
Fri Sep 13 01:07:20 UTC 2019
Author: rmacklem
Date: Fri Sep 13 01:07:19 2019
New Revision: 352270
URL: https://svnweb.freebsd.org/changeset/base/352270
Log:
Add support for the Extended Attribute Access bits.
RFC-8276 defines three additional bits for the Access operation.
This patch adds support to the NFSv4.2 server for these.
The client does not use these bits.
Modified:
projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c
Modified: projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c
==============================================================================
--- projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c Fri Sep 13 01:03:54 2019 (r352269)
+++ projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c Fri Sep 13 01:07:19 2019 (r352270)
@@ -124,7 +124,8 @@ nfsrvd_access(struct nfsrv_descript *nd, __unused int
if ((nd->nd_flag & ND_NFSV4) &&
(nfsmode & ~(NFSACCESS_READ | NFSACCESS_LOOKUP |
NFSACCESS_MODIFY | NFSACCESS_EXTEND | NFSACCESS_DELETE |
- NFSACCESS_EXECUTE))) {
+ NFSACCESS_EXECUTE | NFSACCESS_XAREAD | NFSACCESS_XAWRITE |
+ NFSACCESS_XALIST))) {
nd->nd_repstat = NFSERR_INVAL;
vput(vp);
goto out;
@@ -146,6 +147,24 @@ nfsrvd_access(struct nfsrv_descript *nd, __unused int
if (nfsvno_accchk(vp, VWRITE | VAPPEND, nd->nd_cred, exp, p,
NFSACCCHK_NOOVERRIDE, NFSACCCHK_VPISLOCKED, &supported))
nfsmode &= ~NFSACCESS_EXTEND;
+ }
+ if (nfsmode & NFSACCESS_XAREAD) {
+ supported |= NFSACCESS_XAREAD;
+ if (nfsvno_accchk(vp, VREAD, nd->nd_cred, exp, p,
+ NFSACCCHK_NOOVERRIDE, NFSACCCHK_VPISLOCKED, &supported))
+ nfsmode &= ~NFSACCESS_XAREAD;
+ }
+ if (nfsmode & NFSACCESS_XAWRITE) {
+ supported |= NFSACCESS_XAWRITE;
+ if (nfsvno_accchk(vp, VWRITE, nd->nd_cred, exp, p,
+ NFSACCCHK_NOOVERRIDE, NFSACCCHK_VPISLOCKED, &supported))
+ nfsmode &= ~NFSACCESS_XAWRITE;
+ }
+ if (nfsmode & NFSACCESS_XALIST) {
+ supported |= NFSACCESS_XALIST;
+ if (nfsvno_accchk(vp, VREAD, nd->nd_cred, exp, p,
+ NFSACCCHK_NOOVERRIDE, NFSACCCHK_VPISLOCKED, &supported))
+ nfsmode &= ~NFSACCESS_XALIST;
}
if (nfsmode & NFSACCESS_DELETE) {
supported |= NFSACCESS_DELETE;
More information about the svn-src-projects
mailing list