abbbi / nullfsvfs

a virtual black hole file system that behaves like /dev/null
GNU General Public License v3.0
290 stars 12 forks source link

Can't build on Alma Linux 9.4 #25

Open gaedeb opened 6 months ago

gaedeb commented 6 months ago

I have already opened a ticket to Alma Support.

I can't build the module because of this error:

make -C /lib/modules/5.14.0-427.13.1.el9_4.x86_64/build M=/home/toto/nullfsvfs-master modules
make[1]: Entering directory '/usr/src/kernels/5.14.0-427.13.1.el9_4.x86_64'
  CC [M]  /home/toto/nullfsvfs-master/nullfs.o
/home/toto/nullfsvfs-master/nullfs.c: In function ‘nullfs_tmpfile’:
/home/toto/nullfsvfs-master/nullfs.c:560:15: error: passing argument 1 of ‘d_tmpfile’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  560 |     d_tmpfile(dentry, inode);
      |               ^~~~~~
      |               |
      |               struct dentry *
In file included from ./include/linux/fs.h:8,
                 from ./include/linux/seq_file.h:12,
                 from /home/toto/nullfsvfs-master/nullfs.c:30:
./include/linux/dcache.h:254:23: note: expected ‘struct file *’ but argument is of type ‘struct dentry *’
  254 | extern void d_tmpfile(struct file *, struct inode *);
      |                       ^~~~~~~~~~~~~
/home/toto/nullfsvfs-master/nullfs.c: At top level:
/home/toto/nullfsvfs-master/nullfs.c:581:19: error: initialization of ‘int (*)(struct user_namespace *, struct inode *, struct file *, umode_t)’ {aka ‘int (*)(struct user_namespace *, struct inode *, struct file *, short unsigned int)’} from incompatible pointer type ‘int (*)(struct user_namespace *, struct inode *, struct dentry *, umode_t)’ {aka ‘int (*)(struct user_namespace *, struct inode *, struct dentry *, short unsigned int)’} [-Werror=incompatible-pointer-types]
  581 |     .tmpfile    = nullfs_tmpfile,
      |                   ^~~~~~~~~~~~~~
/home/toto/nullfsvfs-master/nullfs.c:581:19: note: (near initialization for ‘nullfs_dir_inode_operations.tmpfile’)
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:299: /home/toto/nullfsvfs-master/nullfs.o] Error 1
make[1]: *** [Makefile:1934: /home/toto/nullfsvfs-master] Error 2
make[1]: Leaving directory '/usr/src/kernels/5.14.0-427.13.1.el9_4.x86_64'
make: *** [Makefile:5: ko] Error 2

Kernel version is < 6.1.0: 5.14.0-427.13.1.el9_4.x86_64

still in the kernel header as long as I could see, the declaration of d_tmpfile is: extern void d_tmpfile(struct file , struct inode );

hence the issue building the module.

Any idea?

Thanks!

abbbi commented 6 months ago

it looks to me like there might have been noone either yet trying to build on kernel version 5.14 or maybe rhel or alikes have backported patches from higher kernel versions to alma linux 9.4?

I dont know and i dont want to dig that deep. I have ripped off all ifdefs to a workable version within this patch:

https://github.com/abbbi/nullfsvfs/commit/63661607ded4e3ee0ba35cf50e1166a2b203daeb

which makes it build at least, of course breaking all other versions.

Someone must figure out the right #ifdefs for this kernel (or special patched kernel version?) which doesnt break building on other kernel versions.

gaedeb commented 6 months ago

Thank you Michael!

I do not think the problem is with nullfs. https://github.com/torvalds/linux/blob/v5.14/include/linux/dcache.h

dentry is what I am expecting using a kernel 5.14.0

I will come back as soon as someone from Alma Community will replies to my question. https://almalinux.discourse.group/t/dcache-header-mismatch-building-nullfs/4000

I could build the kernel module modifying in the right place the dentry with file.

Thanks again!

abbbi commented 6 months ago

I guess the kernel in Alma has some patches from newer Kernels backportet.. looking at the Alma kernel source Package should bring some insights