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 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.