Re: [PATCH v1 00/17] Add NFSv4.2 POSIX ACL support

Chuck Lever
2025-12-31T02:48:20Z

On Tue, Dec 30, 2025, at 9:21 PM, rick.macklem@gmail.com wrote:
> From: Rick Macklem <rmacklem@uoguelph.ca>
>
> The Internet draft "POSIX Draft ACL support for
> Network File System Version 4, Minor Version2"
> https://datatracker.ietf.org/doc/draft-ietf-nfsv4-posix-acls/
> describes an extension to NFSv4.2 so that POSIX
> draft ACLs can get acquired and set directly,
> without using the loosey NFSv4->POSIX draft mapping
> algorith. It extends the protocol with four new
> attributes.
>
> This patch series implements the server side of
> this extension for the knfsd. It is analogous
> to the NFSACL protocol used as a sideband protocol
> for NFSv3 and allows the ACLs to be acquired/set
> be getfacl(1)/setfacl(1).
>
> The current implementation does not support the
> "per file" scope, where individual file objects
> store/use either an NFSv4 ACL or POSIX draft ACL
> and assumes POSIX draft ACLs are supported for an
> entire file system, if support for POSIX draft ACLs
> is indicated.
>
> Rick Macklem (17):
> Add definitions for the POSIX draft ACL attributes
> Add a new function to acquire the POSIX draft ACLs
> Add a function to set POSIX ACLs
> Add support for encoding/decoding POSIX draft ACLs
> Add a check for both POSIX and NFSv4 ACLs being set
> Add na_dpaclerr and na_paclerr for file creation
> Add support for POSIX draft ACLs for file creation
> Add the arguments for decoding of POSIX ACLs
> Fix a couple of bugs in POSIX ACL decoding
> Improve correctness for the ACL_TRUEFORM attribute
> Make sort_pacl_range() global
> Call sort_pacl_range() for decoded POSIX draft ACLs
> Fix handling of POSIX ACLs with zero ACEs
> Fix handling of zero length ACLs for file creation
> Do not allow (N)VERIFY to check POSIX ACL attributes
> Set the POSIX ACL attributes supported
> Change a bunch of function prefixes to nfsd42_
>
> fs/nfsd/acl.h | 3 +
> fs/nfsd/nfs4acl.c | 35 ++++-
> fs/nfsd/nfs4proc.c | 126 +++++++++++++++--
> fs/nfsd/nfs4xdr.c | 312 ++++++++++++++++++++++++++++++++++++++++++-
> fs/nfsd/nfsd.h | 8 +-
> fs/nfsd/vfs.c | 34 ++++-
> fs/nfsd/vfs.h | 2 +
> fs/nfsd/xdr4.h | 6 +
> include/linux/nfs4.h | 37 +++++
> 9 files changed, 536 insertions(+), 27 deletions(-)
>
> --
> 2.49.0

Thanks for posting, Rick! What branch/tree/commit did you base this series on?

--
Chuck Lever