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 13/13] nfs_common: Remove the unused NFS ACL stream codecs
Date: Sun, 25 Oct 2026 11:16:22 -0400 [thread overview]
Message-ID: <20261025151622.141025-14-cel@kernel.org> (raw)
In-Reply-To: <20261025151622.141025-1-cel@kernel.org>
nfs_stream_encode_acl() and nfs_stream_decode_acl() served the
hand-rolled NFSD codecs for the NFS_ACLv2 and NFS_ACLv3 GETACL and
SETACL procedures. Those procedures now encode and decode ACL entries
through generated codecs, and the NFS client has always used the
xdr_buf variants, so neither function has a caller.
Remove both functions, their exports, and their declarations.
Signed-off-by: Chuck Lever <cel@kernel.org>
---
fs/nfs_common/nfsacl.c | 125 -----------------------------------------
include/linux/nfsacl.h | 6 --
2 files changed, 131 deletions(-)
diff --git a/fs/nfs_common/nfsacl.c b/fs/nfs_common/nfsacl.c
index a66294fcfb6e..cb43fa203a2c 100644
--- a/fs/nfs_common/nfsacl.c
+++ b/fs/nfs_common/nfsacl.c
@@ -141,79 +141,6 @@ int nfsacl_encode(struct xdr_buf *buf, unsigned int base, struct inode *inode,
}
EXPORT_SYMBOL_GPL(nfsacl_encode);
-/**
- * nfs_stream_encode_acl - Encode an NFSv3 ACL
- *
- * @xdr: an xdr_stream positioned to receive an encoded ACL
- * @inode: inode of file whose ACL this is
- * @acl: posix_acl to encode
- * @encode_entries: whether to encode ACEs as well
- * @typeflag: ACL type: NFS_ACL_DEFAULT or zero
- *
- * Return values:
- * %false: The ACL could not be encoded
- * %true: @xdr is advanced to the next available position
- */
-bool nfs_stream_encode_acl(struct xdr_stream *xdr, struct inode *inode,
- struct posix_acl *acl, int encode_entries,
- int typeflag)
-{
- const size_t elem_size = XDR_UNIT * 3;
- u32 entries = (acl && acl->a_count >= 3) ?
- max_t(int, acl->a_count, 4) : 0;
- struct nfsacl_encode_desc nfsacl_desc = {
- .desc = {
- .elem_size = elem_size,
- .array_len = encode_entries ? entries : 0,
- .xcode = xdr_nfsace_encode,
- },
- .acl = acl,
- .typeflag = typeflag,
- .uid = inode->i_uid,
- .gid = inode->i_gid,
- };
- struct nfsacl_simple_acl aclbuf;
- unsigned int base;
- int err;
-
- if (entries > NFS_ACL_MAX_ENTRIES)
- return false;
- if (xdr_stream_encode_u32(xdr, entries) < 0)
- return false;
-
- if (encode_entries && acl && acl->a_count == 3) {
- struct posix_acl *acl2 =
- container_of(&aclbuf.acl, struct posix_acl, hdr);
-
- /* Avoid the use of posix_acl_alloc(). nfsacl_encode() is
- * invoked in contexts where a memory allocation failure is
- * fatal. Fortunately this fake ACL is small enough to
- * construct on the stack. */
- posix_acl_init(acl2, 4);
-
- /* Insert entries in canonical order: other orders seem
- to confuse Solaris VxFS. */
- acl2->a_entries[0] = acl->a_entries[0]; /* ACL_USER_OBJ */
- acl2->a_entries[1] = acl->a_entries[1]; /* ACL_GROUP_OBJ */
- acl2->a_entries[2] = acl->a_entries[1]; /* ACL_MASK */
- acl2->a_entries[2].e_tag = ACL_MASK;
- acl2->a_entries[3] = acl->a_entries[2]; /* ACL_OTHER */
- nfsacl_desc.acl = acl2;
- }
-
- base = xdr_stream_pos(xdr);
- if (!xdr_reserve_space(xdr, XDR_UNIT +
- elem_size * nfsacl_desc.desc.array_len))
- return false;
- err = xdr_encode_array2(xdr->buf, base, &nfsacl_desc.desc);
- if (err)
- return false;
-
- return true;
-}
-EXPORT_SYMBOL_GPL(nfs_stream_encode_acl);
-
-
struct nfsacl_decode_desc {
struct xdr_array2_desc desc;
unsigned int count;
@@ -380,55 +307,3 @@ int nfsacl_decode(struct xdr_buf *buf, unsigned int base, unsigned int *aclcnt,
nfsacl_desc.desc.array_len;
}
EXPORT_SYMBOL_GPL(nfsacl_decode);
-
-/**
- * nfs_stream_decode_acl - Decode an NFSv3 ACL
- *
- * @xdr: an xdr_stream positioned at an encoded ACL
- * @aclcnt: OUT: count of ACEs in decoded posix_acl
- * @pacl: OUT: a dynamically-allocated buffer containing the decoded posix_acl
- *
- * Return values:
- * %false: The encoded ACL is not valid
- * %true: @pacl contains a decoded ACL, and @xdr is advanced
- *
- * On a successful return, caller must release *pacl using posix_acl_release().
- */
-bool nfs_stream_decode_acl(struct xdr_stream *xdr, unsigned int *aclcnt,
- struct posix_acl **pacl)
-{
- const size_t elem_size = XDR_UNIT * 3;
- struct nfsacl_decode_desc nfsacl_desc = {
- .desc = {
- .elem_size = elem_size,
- .xcode = pacl ? xdr_nfsace_decode : NULL,
- },
- };
- unsigned int base;
- u32 entries;
-
- if (xdr_stream_decode_u32(xdr, &entries) < 0)
- return false;
- if (entries > NFS_ACL_MAX_ENTRIES)
- return false;
-
- base = xdr_stream_pos(xdr);
- if (!xdr_inline_decode(xdr, XDR_UNIT + elem_size * entries))
- return false;
- nfsacl_desc.desc.array_maxlen = entries;
- if (xdr_decode_array2(xdr->buf, base, &nfsacl_desc.desc))
- return false;
-
- if (pacl) {
- if (entries != nfsacl_desc.desc.array_len ||
- posix_acl_from_nfsacl(nfsacl_desc.acl) != 0) {
- posix_acl_release(nfsacl_desc.acl);
- return false;
- }
- *pacl = nfsacl_desc.acl;
- }
- if (aclcnt)
- *aclcnt = entries;
- return true;
-}
-EXPORT_SYMBOL_GPL(nfs_stream_decode_acl);
diff --git a/include/linux/nfsacl.h b/include/linux/nfsacl.h
index 5160f30151e8..4ad81b2b2623 100644
--- a/include/linux/nfsacl.h
+++ b/include/linux/nfsacl.h
@@ -30,12 +30,6 @@ nfsacl_encode(struct xdr_buf *buf, unsigned int base, struct inode *inode,
extern int
nfsacl_decode(struct xdr_buf *buf, unsigned int base, unsigned int *aclcnt,
struct posix_acl **pacl);
-extern bool
-nfs_stream_decode_acl(struct xdr_stream *xdr, unsigned int *aclcnt,
- struct posix_acl **pacl);
-extern bool
-nfs_stream_encode_acl(struct xdr_stream *xdr, struct inode *inode,
- struct posix_acl *acl, int encode_entries, int typeflag);
extern int
posix_acl_from_nfsacl(struct posix_acl *acl);
--
2.56.0
next prev parent reply other threads:[~2026-10-26 21:36 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-25 15:16 [PATCH v1 00/13] Convert server-side NFS_ACLv3 XDR to use xdrgen Chuck Lever
2026-10-25 15:16 ` [PATCH v1 01/13] Documentation: Add the RPC language description of NFS_ACLv3 Chuck Lever
2026-10-25 15:16 ` [PATCH v1 02/13] NFSD: Add infrastructure for generating NFS_ACLv3 XDR encoders and decoders Chuck Lever
2026-10-25 15:16 ` [PATCH v1 03/13] NFSD: Remove '#include "xdr3.h"' from nfs3acl.c Chuck Lever
2026-10-25 15:16 ` [PATCH v1 04/13] NFSD: New NFS_ACLv3 status codes Chuck Lever
2026-10-25 15:16 ` [PATCH v1 05/13] NFSD: Use xdrgen XDR functions for the NFS-ACL v3 NULL procedure Chuck Lever
2026-10-25 15:16 ` [PATCH v1 06/13] NFSD: Implement NFS-ACL v3 ACL encoding and decoding with xdrgen Chuck Lever
2026-10-25 15:16 ` [PATCH v1 07/13] NFSD: Use xdrgen XDR functions for the NFS-ACL v3 GETACL procedure Chuck Lever
2026-10-25 15:16 ` [PATCH v1 08/13] NFSD: Use xdrgen XDR functions for the NFS-ACL v3 SETACL procedure Chuck Lever
2026-10-25 15:16 ` [PATCH v1 09/13] NFSD: Map every NFS_ACLv3 reply status into aclstat3 Chuck Lever
2026-10-25 15:16 ` [PATCH v1 10/13] NFSD: Remove the hand-coded XDR helpers for the NFS_ACLv3 procedures Chuck Lever
2026-10-25 15:16 ` [PATCH v1 11/13] NFS: Move NFSACL_MAXPAGES into fs/nfs/nfs3_fs.h Chuck Lever
2026-10-26 22:50 ` Anna Schumaker
2026-10-25 15:16 ` [PATCH v1 12/13] NFSD: Share the attribute conversion helpers with the NFS_ACL procs Chuck Lever
2026-10-25 15:16 ` Chuck Lever [this message]
2026-10-27 10:56 ` [PATCH v1 00/13] Convert server-side NFS_ACLv3 XDR to use xdrgen Jeff Layton
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=20261025151622.141025-14-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox