Re: nfs compile error nfslocalio.o and localio.o since v6.14-rc1

Chuck Lever
2025-02-15T16:30:07Z

Hi Pali -

On 2/15/25 7:00 AM, Pali Rohár wrote:
> Hello, since v6.14-rc1, file nfslocalio.c cannot be compiled with
> gcc-8.3 and attached .config file. Same problem is with localio.c.

If the interwebs are correct, gcc-8.3 was released in 2014. ISTR that
recent releases of the Linux kernel no longer support gcc versions that
old. It appears to be snagging on kernel-wide utility helpers, not code
specific to NFS.

If that's the case, it might not be possible for us to address this
breakage.

Adding Mike, who contributed this code.

> Error is:
>
> $ make bzImage
> CALL scripts/checksyscalls.sh
> DESCEND objtool
> INSTALL libsubcmd_headers
> CC fs/nfs_common/nfslocalio.o
> In file included from ./include/linux/rbtree.h:24,
> from ./include/linux/mm_types.h:11,
> from ./include/linux/mmzone.h:22,
> from ./include/linux/gfp.h:7,
> from ./include/linux/umh.h:4,
> from ./include/linux/kmod.h:9,
> from ./include/linux/module.h:17,
> from fs/nfs_common/nfslocalio.c:7:
> fs/nfs_common/nfslocalio.c: In function ‘nfs_close_local_fh’:
> ./include/linux/rcupdate.h:531:9: error: dereferencing pointer to incomplete type ‘struct nfsd_file’
> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
> ^
> ./include/linux/rcupdate.h:650:31: note: in expansion of macro ‘__rcu_access_pointer’
> #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
> ^~~~~~~~~~~~~~~~~~~~
> fs/nfs_common/nfslocalio.c:288:10: note: in expansion of macro ‘rcu_access_pointer’
> ro_nf = rcu_access_pointer(nfl->ro_file);
> ^~~~~~~~~~~~~~~~~~
> make[4]: *** [scripts/Makefile.build:207: fs/nfs_common/nfslocalio.o] Error 1
> make[3]: *** [scripts/Makefile.build:465: fs/nfs_common] Error 2
> make[2]: *** [scripts/Makefile.build:465: fs] Error 2
> make[1]: *** [/home/pali/develop/kernel.org/linux/Makefile:1994: .] Error 2
> make: *** [Makefile:251: __sub-make] Error 2
>
>
> $ make fs/nfs/localio.o
> CALL scripts/checksyscalls.sh
> DESCEND objtool
> INSTALL libsubcmd_headers
> CC fs/nfs/localio.o
> In file included from ./include/linux/rbtree.h:24,
> from ./include/linux/mm_types.h:11,
> from ./include/linux/mmzone.h:22,
> from ./include/linux/gfp.h:7,
> from ./include/linux/umh.h:4,
> from ./include/linux/kmod.h:9,
> from ./include/linux/module.h:17,
> from fs/nfs/localio.c:11:
> fs/nfs/localio.c: In function ‘nfs_local_open_fh’:
> ./include/linux/rcupdate.h:538:9: error: dereferencing pointer to incomplete type ‘struct nfsd_file’
> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
> ^
> ./include/linux/rcupdate.h:686:2: note: in expansion of macro ‘__rcu_dereference_check’
> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
> ^~~~~~~~~~~~~~~~~~~~~~~
> ./include/linux/rcupdate.h:758:28: note: in expansion of macro ‘rcu_dereference_check’
> #define rcu_dereference(p) rcu_dereference_check(p, 0)
> ^~~~~~~~~~~~~~~~~~~~~
> fs/nfs/localio.c:275:7: note: in expansion of macro ‘rcu_dereference’
> nf = rcu_dereference(*pnf);
> ^~~~~~~~~~~~~~~
> make[4]: *** [scripts/Makefile.build:207: fs/nfs/localio.o] Error 1
> make[3]: *** [scripts/Makefile.build:465: fs/nfs] Error 2
> make[2]: *** [scripts/Makefile.build:465: fs] Error 2
> make[1]: *** [/home/pali/develop/kernel.org/linux/Makefile:1994: .] Error 2
> make: *** [Makefile:251: __sub-make] Error 2
>
>
> Reproduced from commit 7ff71e6d9239 ("Merge tag 'alpha-fixes-v6.14-rc2'
> of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha").

--
Chuck Lever