From: Chuck Lever <cel@kernel.org>
To: NeilBrown <neil@brown.name>, Jeff Layton <jlayton@kernel.org>,
Olga Kornievskaia <okorniev@redhat.com>,
Dai Ngo <dai.ngo@oracle.com>, Tom Talpey <tom@talpey.com>
Cc: <linux-nfs@vger.kernel.org>
Subject: [PATCH v1 00/17] Convert server-side NFS_ACLv2 XDR to use xdrgen
Date: Thu, 22 Oct 2026 09:53:24 -0400 [thread overview]
Message-ID: <20261022135341.14265-1-cel@kernel.org> (raw)
Replace NFSD's NFS_ACLv2 XDR encoders and decoders with code that is
mechanically generated from the protocol's RPC language description.
No RFC defines NFS_ACL. The description in nfs_acl2.x is copied from
draft-ietf-nfsv4-nfs-acl.
NFS_ACLv2 is the first consumer of the aggregate codec on a counted
array (already queued for v7.4) and the first on the decode side. The
NFSv2 and NFSv3 READDIR conversions exercise only encode of an
optional-data list.
After this series is applied, NFS_ACLv2 reply statuses follow the
draft specification, which has some changes from the previous ad hoc
code. In addition to replacing the status codes defined by the NFSv2
spec, a well-formed but invalid SETACL argument gets ACL2ERR_INVAL,
where the previous decoder returned GARBAGE_ARGS or accepted it. An
undefined GETACL mask bit gets ACL2ERR_INVAL rather than NFSERR_IO.
Statuses that fh_verify() and fh_getattr() produce with no NFSv2
equivalent no longer reach the wire unmapped.
Chuck Lever (17):
xdrgen: Reject out-of-range unsigned short values on decode
xdrgen: Reject out-of-range short values on decode
nfs_common: Export posix_acl_from_nfsacl for server ACL codecs
NFSD: Remove the unused NFSACL_MAXWORDS macro
NFSD: Move the definition of NFS_ACL_MAX_ENTRIES
Documentation: Add the RPC language description of NFS_ACLv2
NFSD: Add infrastructure for generating NFS_ACLv2 XDR encoders and
decoders
NFSD: Remove '#include "xdr3.h"' from nfs2acl.c
NFSD: Remove '#include "xdr.h"' from nfs2acl.c
NFSD: Switch to using the NFS_ACLv2 status codes
NFSD: Use xdrgen XDR functions for the NFS-ACL v2 NULL procedure
NFSD: Implement NFS-ACL v2 ACL encoding and decoding with xdrgen
NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETACL procedure
NFSD: Use xdrgen XDR functions for the NFS-ACL v2 SETACL procedure
NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETATTR procedure
NFSD: Use xdrgen XDR functions for the NFS-ACL v2 ACCESS procedure
NFSD: Map every NFS_ACLv2 reply status into aclstat2
Documentation/sunrpc/xdr/nfs_acl2.x | 283 ++++++++
fs/nfs/nfs3acl.c | 1 +
fs/nfs/nfs3client.c | 1 +
fs/nfs/nfs3xdr.c | 1 +
fs/nfs_common/nfsacl.c | 15 +-
fs/nfsd/Makefile | 15 +-
fs/nfsd/nfs2acl.c | 892 +++++++++++++++++-------
fs/nfsd/nfs3acl.c | 4 +-
fs/nfsd/nfs4xdr.c | 1 +
fs/nfsd/nfs_acl2xdr_gen.c | 869 +++++++++++++++++++++++
fs/nfsd/nfs_acl2xdr_gen.h | 40 ++
fs/nfsd/nfssvc.c | 1 +
include/linux/nfsacl.h | 8 +-
include/linux/sunrpc/xdrgen/_builtins.h | 16 +-
include/linux/sunrpc/xdrgen/nfs_acl2.h | 278 ++++++++
include/uapi/linux/nfsacl.h | 2 +
16 files changed, 2155 insertions(+), 272 deletions(-)
create mode 100644 Documentation/sunrpc/xdr/nfs_acl2.x
create mode 100644 fs/nfsd/nfs_acl2xdr_gen.c
create mode 100644 fs/nfsd/nfs_acl2xdr_gen.h
create mode 100644 include/linux/sunrpc/xdrgen/nfs_acl2.h
--
2.56.0
next reply other threads:[~2026-10-22 13:53 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-22 13:53 Chuck Lever [this message]
2026-10-22 13:53 ` [PATCH v1 01/17] xdrgen: Reject out-of-range unsigned short values on decode Chuck Lever
2026-10-22 13:53 ` [PATCH v1 02/17] xdrgen: Reject out-of-range " Chuck Lever
2026-10-22 13:53 ` [PATCH v1 03/17] nfs_common: Export posix_acl_from_nfsacl for server ACL codecs Chuck Lever
2026-10-22 13:53 ` [PATCH v1 04/17] NFSD: Remove the unused NFSACL_MAXWORDS macro Chuck Lever
2026-10-22 13:53 ` [PATCH v1 05/17] NFSD: Move the definition of NFS_ACL_MAX_ENTRIES Chuck Lever
2026-10-22 13:53 ` [PATCH v1 06/17] Documentation: Add the RPC language description of NFS_ACLv2 Chuck Lever
2026-10-22 13:53 ` [PATCH v1 07/17] NFSD: Add infrastructure for generating NFS_ACLv2 XDR encoders and decoders Chuck Lever
2026-10-22 13:53 ` [PATCH v1 08/17] NFSD: Remove '#include "xdr3.h"' from nfs2acl.c Chuck Lever
2026-10-22 13:53 ` [PATCH v1 09/17] NFSD: Remove '#include "xdr.h"' " Chuck Lever
2026-10-22 13:53 ` [PATCH v1 10/17] NFSD: Switch to using the NFS_ACLv2 status codes Chuck Lever
2026-10-22 13:53 ` [PATCH v1 11/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 NULL procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 12/17] NFSD: Implement NFS-ACL v2 ACL encoding and decoding with xdrgen Chuck Lever
2026-10-22 13:53 ` [PATCH v1 13/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETACL procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 14/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 SETACL procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 15/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETATTR procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 16/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 ACCESS procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 17/17] NFSD: Map every NFS_ACLv2 reply status into aclstat2 Chuck Lever
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261022135341.14265-1-cel@kernel.org \
--to=cel@kernel.org \
--cc=dai.ngo@oracle.com \
--cc=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neil@brown.name \
--cc=okorniev@redhat.com \
--cc=tom@talpey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.