Date: Fri, 13 Sep 2019 01:07:19 +0000 (UTC) From: Rick Macklem <rmacklem@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r352270 - projects/nfsv42/sys/fs/nfsserver Message-ID: <201909130107.x8D17JUS036503@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909130107.x8D17JUS036503>