Re: [PATCH 1/4] nfs4.2: add nfs4_2.x to generate the UNCACHEABLE_FILE_DATA attribute

"Anna Schumaker" <[email protected]>
Newsgroups gmane.linux.nfs
Message-ID <[email protected]>
Hi Mike,

On Wed, Jun 24, 2026, at 3:17 PM, Mike Snitzer wrote:
> Introduce Documentation/sunrpc/xdr/nfs4_2.x for NFSv4.2 protocol
> extensions and define the UNCACHEABLE_FILE_DATA attribute (attr 87)
> there, verbatim from draft-ietf-nfsv4-uncacheable-files Section 7:
>
>   typedef bool            fattr4_uncacheable_file_data;
>   const FATTR4_UNCACHEABLE_FILE_DATA      = 87;
>
> This mirrors how the sibling NFSv4.2 attributes (FATTR4_OFFLINE=83,
> FATTR4_TIME_DELEG_*=84/85, FATTR4_OPEN_ARGUMENTS=86) are defined in
> Documentation/sunrpc/xdr/nfs4_1.x and generated by
> tools/net/sunrpc/xdrgen into <linux/sunrpc/xdrgen/nfs4_1.h>, which
> nfs4.h already includes.
>
> Wire the fs/nfsd "make xdrgen" target to generate the definitions header
> <linux/sunrpc/xdrgen/nfs4_2.h> and include it from <linux/nfs4.h>, so the
> generated FATTR4_UNCACHEABLE_FILE_DATA constant and the
> NFS4_fattr4_uncacheable_file_data_sz size macro are available to the
> NFSv4.2 client support that follows.

Aren't these client side changes? The xdrgen stuff is used on the
server-side. I wouldn't expect any of these values to be available
if nfsd is kconfig-ed off.

Thanks,
Anna

>
> No functional change.
>
> Signed-off-by: Mike Snitzer <[email protected]>
> Assisted-by: Claude:claude-opus-4-8
> ---
>  Documentation/sunrpc/xdr/nfs4_2.x    | 52 ++++++++++++++++++++++++++++
>  fs/nfsd/Makefile                     |  5 ++-
>  include/linux/nfs4.h                 |  1 +
>  include/linux/sunrpc/xdrgen/nfs4_2.h | 19 ++++++++++
>  4 files changed, 76 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/sunrpc/xdr/nfs4_2.x
>  create mode 100644 include/linux/sunrpc/xdrgen/nfs4_2.h
>
> diff --git a/Documentation/sunrpc/xdr/nfs4_2.x 
> b/Documentation/sunrpc/xdr/nfs4_2.x
> new file mode 100644
> index 000000000000..d10a91d657b0
> --- /dev/null
> +++ b/Documentation/sunrpc/xdr/nfs4_2.x
> @@ -0,0 +1,52 @@
> +/*
> + * Copyright (c) 2026 IETF Trust and the persons identified
> + * as the document authors.  All rights reserved.
> + *
> + * The document authors are identified in RFC 7862 and
> + * draft-ietf-nfsv4-uncacheable-files.
> + *
> + * Redistribution and use in source and binary forms, with
> + * or without modification, are permitted provided that the
> + * following conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + *   copyright notice, this list of conditions and the
> + *   following disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + *   copyright notice, this list of conditions and the
> + *   following disclaimer in the documentation and/or other
> + *   materials provided with the distribution.
> + *
> + * - Neither the name of Internet Society, IETF or IETF
> + *   Trust, nor the names of specific contributors, may be
> + *   used to endorse or promote products derived from this
> + *   software without specific prior written permission.
> + *
> + *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
> + *   AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
> + *   WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + *   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> + *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
> + *   EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
> + *   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
> + *   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
> + *   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> + *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
> + *   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> + *   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
> + *   IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
> + *   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +pragma header nfs4;
> +
> +/*
> + * The following content was extracted from
> + * draft-ietf-nfsv4-uncacheable-files
> + */
> +
> +typedef bool            fattr4_uncacheable_file_data;
> +
> +const FATTR4_UNCACHEABLE_FILE_DATA      = 87;
> diff --git a/fs/nfsd/Makefile b/fs/nfsd/Makefile
> index f0da4d69dc74..0ff198e102a3 100644
> --- a/fs/nfsd/Makefile
> +++ b/fs/nfsd/Makefile
> @@ -37,11 +37,14 @@ nfsd-$(CONFIG_DEBUG_FS) += debugfs.o
>  #
>  .PHONY: xdrgen
> 
> -xdrgen: ../../include/linux/sunrpc/xdrgen/nfs4_1.h nfs4xdr_gen.h 
> nfs4xdr_gen.c
> +xdrgen: ../../include/linux/sunrpc/xdrgen/nfs4_1.h 
> ../../include/linux/sunrpc/xdrgen/nfs4_2.h nfs4xdr_gen.h nfs4xdr_gen.c
> 
>  ../../include/linux/sunrpc/xdrgen/nfs4_1.h: 
> ../../Documentation/sunrpc/xdr/nfs4_1.x
>  	../../tools/net/sunrpc/xdrgen/xdrgen definitions $< > $@
> 
> +../../include/linux/sunrpc/xdrgen/nfs4_2.h: 
> ../../Documentation/sunrpc/xdr/nfs4_2.x
> +	../../tools/net/sunrpc/xdrgen/xdrgen definitions $< > $@
> +
>  nfs4xdr_gen.h: ../../Documentation/sunrpc/xdr/nfs4_1.x
>  	../../tools/net/sunrpc/xdrgen/xdrgen declarations $< > $@
> 
> diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
> index 44e5e9fa12e1..34aa303354bc 100644
> --- a/include/linux/nfs4.h
> +++ b/include/linux/nfs4.h
> @@ -18,6 +18,7 @@
>  #include <uapi/linux/nfs4.h>
>  #include <linux/sunrpc/msg_prot.h>
>  #include <linux/sunrpc/xdrgen/nfs4_1.h>
> +#include <linux/sunrpc/xdrgen/nfs4_2.h>
> 
>  enum nfs4_acl_whotype {
>  	NFS4_ACL_WHO_NAMED = 0,
> diff --git a/include/linux/sunrpc/xdrgen/nfs4_2.h 
> b/include/linux/sunrpc/xdrgen/nfs4_2.h
> new file mode 100644
> index 000000000000..9441f6cefbff
> --- /dev/null
> +++ b/include/linux/sunrpc/xdrgen/nfs4_2.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/* Generated by xdrgen. Manual edits will be lost. */
> +/* XDR specification file: ../../Documentation/sunrpc/xdr/nfs4_2.x */
> +/* XDR specification modification time: Fri Jun 12 10:44:36 2026 */
> +
> +#ifndef _LINUX_XDRGEN_NFS4_2_DEF_H
> +#define _LINUX_XDRGEN_NFS4_2_DEF_H
> +
> +#include <linux/types.h>
> +#include <linux/sunrpc/xdrgen/_defs.h>
> +
> +typedef bool fattr4_uncacheable_file_data;
> +
> +enum { FATTR4_UNCACHEABLE_FILE_DATA = 87 };
> +
> +#define NFS4_fattr4_uncacheable_file_data_sz \
> +	(XDR_bool)
> +
> +#endif /* _LINUX_XDRGEN_NFS4_2_DEF_H */
> -- 
> 2.47.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.