Re: [PATCH v1 00/42] Update NFSD XDR functions

J. Bruce Fields
2021-01-22T22:17:05Z

ACK to the patches, looks good to me.--b.

On Tue, Jan 05, 2021 at 10:29:40AM -0500, Chuck Lever wrote:
> The long-term purpose is to convert the NFSD XDR encoder and decoder
> functions to use the struct xdr_stream API. This is a refactor and
> clean-up with few or no changes in behavior expected, but there are
> some long-term benefits:
>
> - More robust input sanitization in the NFSD decoders.
> - Help make it possible to use common kernel library functions with
> XDR stream APIs (for example, GSS-API).
> - Align the structure of the source code with the RFCs so it is
> easier to learn, verify, and maintain our XDR implementation.
> - Removal of more than a hundred hidden dprintk() call sites.
> - Removal of as much explicit manipulation of pages as possible to
> help make the eventual transition to xdr->bvecs smoother.
>
> The current series focuses on NFSv2 and NFSv3 decoder changes. Please
> review and comment!
>
> The full set of patches lives in a topic branch in my git repo:
>
> git://git.linux-nfs.org/projects/cel/cel-2.6.git nfsd-xdr_stream
>
>
> ---
>
> Chuck Lever (42):
> SUNRPC: Make trace_svc_process() display the RPC procedure symbolically
> SUNRPC: Display RPC procedure names instead of proc numbers
> SUNRPC: Move definition of XDR_UNIT
> NFSD: Update GETATTR3args decoder to use struct xdr_stream
> NFSD: Update ACCESS3arg decoder to use struct xdr_stream
> NFSD: Update READ3arg decoder to use struct xdr_stream
> NFSD: Update WRITE3arg decoder to use struct xdr_stream
> NFSD: Update READLINK3arg decoder to use struct xdr_stream
> NFSD: Fix returned READDIR offset cookie
> NFSD: Add helper to set up the pages where the dirlist is encoded
> NFSD: Update READDIR3args decoders to use struct xdr_stream
> NFSD: Update COMMIT3arg decoder to use struct xdr_stream
> NFSD: Update the NFSv3 DIROPargs decoder to use struct xdr_stream
> NFSD: Update the RENAME3args decoder to use struct xdr_stream
> NFSD: Update the LINK3args decoder to use struct xdr_stream
> NFSD: Update the SETATTR3args decoder to use struct xdr_stream
> NFSD: Update the CREATE3args decoder to use struct xdr_stream
> NFSD: Update the MKDIR3args decoder to use struct xdr_stream
> NFSD: Update the SYMLINK3args decoder to use struct xdr_stream
> NFSD: Update the MKNOD3args decoder to use struct xdr_stream
> NFSD: Update the NFSv2 GETATTR argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 READ argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 WRITE argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 READLINK argument decoder to use struct xdr_stream
> NFSD: Add helper to set up the pages where the dirlist is encoded
> NFSD: Update the NFSv2 READDIR argument decoder to use struct xdr_stream
> NFSD: Update NFSv2 diropargs decoding to use struct xdr_stream
> NFSD: Update the NFSv2 RENAME argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 LINK argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 SETATTR argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 CREATE argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 SYMLINK argument decoder to use struct xdr_stream
> NFSD: Remove argument length checking in nfsd_dispatch()
> NFSD: Update the NFSv2 GETACL argument decoder to use struct xdr_stream
> NFSD: Add an xdr_stream-based decoder for NFSv2/3 ACLs
> NFSD: Update the NFSv2 SETACL argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 ACL GETATTR argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 ACL ACCESS argument decoder to use struct xdr_stream
> NFSD: Clean up after updating NFSv2 ACL decoders
> NFSD: Update the NFSv3 GETACL argument decoder to use struct xdr_stream
> NFSD: Update the NFSv2 SETACL argument decoder to use struct xdr_stream
> NFSD: Clean up after updating NFSv3 ACL decoders
>
>
> fs/nfs_common/nfsacl.c | 52 +++
> fs/nfsd/nfs2acl.c | 62 ++--
> fs/nfsd/nfs3acl.c | 42 ++-
> fs/nfsd/nfs3proc.c | 71 +++--
> fs/nfsd/nfs3xdr.c | 538 ++++++++++++++++++--------------
> fs/nfsd/nfsproc.c | 74 +++--
> fs/nfsd/nfssvc.c | 34 --
> fs/nfsd/nfsxdr.c | 350 ++++++++++-----------
> fs/nfsd/xdr.h | 12 +-
> fs/nfsd/xdr3.h | 20 +-
> include/linux/nfsacl.h | 3 +
> include/linux/sunrpc/msg_prot.h | 3 -
> include/linux/sunrpc/xdr.h | 13 +-
> include/trace/events/sunrpc.h | 15 +-
> include/uapi/linux/nfs3.h | 6 +
> 15 files changed, 680 insertions(+), 615 deletions(-)
>
> --
> Chuck Lever