Giter VIP home page Giter VIP logo

shiftfs-dkms's People

Contributors

toby63 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

shiftfs-dkms's Issues

k5.8 branch renamed to k5.10

Question:

Looks like the k5.8 branch was renamed to k5.10, can I use the k5.10 branch for Ubuntu 20.04 which has a 5.8 kernel?

`/proc/*/maps` gets broken.

Description of the Bug/Problem:
The path proc/*/maps is not the path in a container, but the host's path .NET doesn't work well because it depends on this path.

In a container

$ cat /proc/self/maps
556115b71000-556115b73000 r--p 00000000 09:2c 1208370132                 /run/containerd/io.containerd.runtime.v2.task/k8s.io/de77df3e392b5affbbf9d2a79f0e58e8e40eb69b81c95accda994a022850aef7/rootfs/usr/bin/cat
556115b73000-556115b78000 r-xp 00002000 09:2c 1208370132                 /run/containerd/io.containerd.runtime.v2.task/k8s.io/de77df3e392b5affbbf9d2a79f0e58e8e40eb69b81c95accda994a022850aef7/rootfs/usr/bin/cat
...

How to Reproduce:
It is probably easiest to use shiftfs with lxd

Expected behavior:

with fuse-overlayfs

$ cat /proc/self/maps
55d0c4e25000-55d0c4e27000 r--p 00000000 00:474 353127110                 /usr/bin/cat
55d0c4e27000-55d0c4e2c000 r-xp 00002000 00:474 353127110                 /usr/bin/cat
...

System information:

  • OS/Distribution:
  • Kernelversion:
$ uname -a
Linux gitpodio-gitpod-t06v332wdlr 5.16.20-051620-generic #202204131933 SMP PREEMPT Wed Apr 13 19:37:36 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Additional information/context:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1968027

Update Log

Note: Take a look at the upstream logs (links can be found in the specific branches in section Upgrade).

This issue only lists repo updates, which will likely not come anymore as this is mostly unmaintained for now.

Add BUILD_EXCLUSIVE_KERNEL to dkms.conf of various kernel specific branches

Adding the BUILD_EXCLUSIVE_KERNEL variable will tell dkms to only build the module for supported kernels. For instance, I added BUILD_EXCLUSIVE_KERNEL="^5.13.*" for the k513 branch because have this module installed in /usr/src so that it will be built every time I upgrade my kernel. I ran in to some file corruption and ended up needing to reinstall kernel headers for multiple kernels, which triggered a rebuilt for all dkms modules against all kernels which had headers reinstalled. Without the BUILD_EXCLUSIVE_KERNEL variable dkms would try to built the shiftfs-k513 against all the kernels, eg. 5.11 and 5.10, and would cause an error with non-5.13 kernels. This fixes that issue.


Todo:

Try and implement BUILD_EXCLUSIVE_KERNEL

  • for multiple branches, e.g. ^5.(10|8).*:
    • 5.10 (5.8 to 5.10)
    • 5.4 (5.4 and <5.8)
  • in AUR packages
  • in 5.13
  • (optional) Test scenario with mutiple shiftfs versions installed at the same time
  • (optional) change 5.13 for multiple branches (once 5.14 is available)
  • (optional) change AUR packages for multiple branches

Compilation for kernel 5.18 is not working

Description of the Bug/Problem:

Make.log:

make: Verzeichnis „/usr/lib/modules/5.18.3-arch1-1/build“ wird betreten
  CC [M]  /var/lib/dkms/shiftfs-dkms/20220413/build/shiftfs.o
/var/lib/dkms/shiftfs-dkms/20220413/build/shiftfs.c: In Funktion »shiftfs_fiemap«:
/var/lib/dkms/shiftfs-dkms/20220413/build/shiftfs.c:741:17: Fehler: Implizite Deklaration der Funktion »filemap_write_and_wait«; meinten Sie »file_write_and_wait«? [-Werror=implicit-function-declaration]
  741 |                 filemap_write_and_wait(loweri->i_mapping);
      |                 ^~~~~~~~~~~~~~~~~~~~~~
      |                 file_write_and_wait
cc1: Einige Warnungen werden als Fehler behandelt
make[1]: *** [scripts/Makefile.build:288: /var/lib/dkms/shiftfs-dkms/20220413/build/shiftfs.o] Fehler 1
make: *** [Makefile:1834: /var/lib/dkms/shiftfs-dkms/20220413/build] Fehler 2
make: Verzeichnis „/usr/lib/modules/5.18.3-arch1-1/build“ wird verlassen

System information:

  • OS/Distribution: Archlinux
  • Kernelversion: 5.18.3.arch1-1
  • dkms-version: 3.0.3-1
  • shiftfs-dkms-version: -

Additional information/context:

Testreports

Here you can post a testreport.
Use (copy) the template below.


System Information:

  • OS/Distro (+version):
  • Kernelversion:
  • dkms-version:

Details:

  • shiftfs-dkms-version:

Tested functions:
#worked (yes/no) or "not tested"; details (optional)

  • install:
  • update:
  • remove:

#optional:
Further Information/Comment:
#- Usecases:
#e.g. LXD:

Arch Package

Update: I added a package to AUR:
https://aur.archlinux.org/packages/?O=0&K=shiftfs

Howto/Which package to choose:

  • Install shiftfs if you only use the main kernel (default)
  • Install shiftfs-dkms instead if you use custom kernels or more kernel versions (like linux-versioned-bin): it will build shiftfs for all kernels you have installed automatically.

is_idmapped_mnt throwing error on compilation

Seeing this crop up since the update a few days ago:

Tue Feb 21 22:06:59 UTC 2023
make[1]: Entering directory '/var/lib/dkms/shiftfs/k516/build'
make -C /lib/modules/5.15.0-1017-aws/build M="$(pwd)" EXTRA_CFLAGS="-DSHIFTFS_MAGIC=0x6a656a62" modules
make[2]: Entering directory '/usr/src/linux-headers-5.15.0-1017-aws'
  CC [M]  /var/lib/dkms/shiftfs/k516/build/shiftfs.o
/var/lib/dkms/shiftfs/k516/build/shiftfs.c: In function ‘shiftfs_fill_super’:
/var/lib/dkms/shiftfs/k516/build/shiftfs.c:2022:6: error: implicit declaration of function ‘is_idmapped_mnt’ [-Werror=implicit-function-declaration]
 2022 |  if (is_idmapped_mnt(path.mnt)) {
      |      ^~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:297: /var/lib/dkms/shiftfs/k516/build/shiftfs.o] Error 1
make[2]: *** [Makefile:1881: /var/lib/dkms/shiftfs/k516/build] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-5.15.0-1017-aws'
make[1]: *** [Makefile:15: default] Error 2
make[1]: Leaving directory '/var/lib/dkms/shiftfs/k516/build'

Comment by @toby63:

Workaround is to use an older commit for now.
Run the following in your shiftfs folder, usually named shiftfs-k516:

git checkout 941cb2dbf892c5838355c74078e571d490936827 - this will use the 4th last commit, which still worked.
Then run the build with make -f Makefile.dkms again.

.deb Package (for Debian, Ubuntu etc.)

If you want to create a deb-package, you can take a look at these actions/commands in the manual of dkms:

dkms mkdsc [module/module-version] [-k kernel/arch] # creates a deb source package
dkms mkdeb [module/module-version] [-k kernel/arch] # creates a deb binary package

As far as I understand it, one of these lines would replace dkms install for example, so instead of installing the kernel module, a source or binary package is created.
But I haven't used/tested that yet.


I don't plan to create .deb packages myself, as I find the debian packaging system to complicated and maintaining multiple packages is also too much work for me.

But if anyone tries this, share your results 😉.

Shiftfs does not compile with Kernel v5.8.1

Description of the Bug/Problem:
While updating to the newest kernel version on arch linux an error was shown regarding shiftfs.
Shiftfs couldn't be built against the current kernel (see Log below for details).

Workaround:
If you want to use shiftfs, don't upgrade to or use Kernel 5.8.1.
Kernel Version 5.7.12 was the last version that worked on my computer.

System information:

  • OS/Distribution: Arch Linux
  • Kernelversion: 5.8.1-arch1-1
  • dkms-version: 2.8
  • shiftfs-dkms-version: 1.1

Log:

DKMS make.log for shiftfs-1.1 for kernel 5.8.1-arch1-1 (x86_64)
Sa 15. Aug 20:39:38 CEST 2020
make[1]: Verzeichnis „/var/lib/dkms/shiftfs/1.1/build“ wird betreten
make -C /lib/modules/5.8.1-arch1-1/build M="$(pwd)" EXTRA_CFLAGS="-DSHIFTFS_MAGIC=0x6a656a62" modules
make[2]: Verzeichnis „/usr/lib/modules/5.8.1-arch1-1/build“ wird betreten
  CC [M]  /var/lib/dkms/shiftfs/1.1/build/shiftfs.o
/var/lib/dkms/shiftfs/1.1/build/shiftfs.c: In Funktion »shiftfs_fiemap«:
/var/lib/dkms/shiftfs/1.1/build/shiftfs.c:731:13: Fehler: falsche Verwendung des undefinierten Typs »struct fiemap_extent_info«
  731 |  if (fieinfo->fi_flags & FIEMAP_FLAG_SYNC)
      |             ^~
/var/lib/dkms/shiftfs/1.1/build/shiftfs.c:731:26: Fehler: »FIEMAP_FLAG_SYNC« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »FS_XFLAG_SYNC«?
  731 |  if (fieinfo->fi_flags & FIEMAP_FLAG_SYNC)
      |                          ^~~~~~~~~~~~~~~~
      |                          FS_XFLAG_SYNC
/var/lib/dkms/shiftfs/1.1/build/shiftfs.c:731:26: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet
make[3]: *** [scripts/Makefile.build:281: /var/lib/dkms/shiftfs/1.1/build/shiftfs.o] Fehler 1
make[2]: *** [Makefile:1756: /var/lib/dkms/shiftfs/1.1/build] Fehler 2
make[2]: Verzeichnis „/usr/lib/modules/5.8.1-arch1-1/build“ wird verlassen
make[1]: *** [Makefile:15: default] Fehler 2
make[1]: Verzeichnis „/var/lib/dkms/shiftfs/1.1/build“ wird verlassen

@brauner

DKMS error on kernel versions 5.11+

Update:
Fixed, see: branch k5.11.
Also fixed in AUR for Arch Linux (with version 20210301-1).

Thanks to @brauner.


Description of the Bug/Problem:
On kernel update, dkms shows an error:

DKMS make.log for shiftfs-dkms-20200804 for kernel 5.11.2-arch1-1 (x86_64)
So 28. Feb 17:25:33 CET 2021
make: Verzeichnis „/usr/lib/modules/5.11.2-arch1-1/build“ wird betreten
  CC [M]  /var/lib/dkms/shiftfs-dkms/20200804/build/shiftfs.o
/var/lib/dkms/shiftfs-dkms/20200804/build/shiftfs.c: In Funktion »shiftfs_btrfs_ioctl_fd_restore«:
/var/lib/dkms/shiftfs-dkms/20200804/build/shiftfs.c:1423:2: Fehler: Implizite Deklaration der Funktion »__close_fd«; meinten Sie »close_fd«? [-Werror=implicit-function-declaration]
 1423 |  __close_fd(current->files, fd);
      |  ^~~~~~~~~~
      |  close_fd
cc1: Einige Warnungen werden als Fehler behandelt
make[1]: *** [scripts/Makefile.build:279: /var/lib/dkms/shiftfs-dkms/20200804/build/shiftfs.o] Fehler 1
make: *** [Makefile:1800: /var/lib/dkms/shiftfs-dkms/20200804/build] Fehler 2
make: Verzeichnis „/usr/lib/modules/5.11.2-arch1-1/build“ wird verlassen

Expected behavior:
Kernel module should build.

System information:

  • OS/Distribution: Arch Linux
  • Kernelversion: 5.11.2(-arch1-1)
  • dkms-version: 2.8
  • shiftfs-dkms-version: 1.3k58

Workaround:
I suspect this error to occur on the whole 5.11 branch (though I haven't tested that yet), so users should probably stay on the 5.10 branch for now.
On Arch linux for example, the linux-lts package provides the 5.10 branch.

LXD containers using shiftfs on ZFS or TMPFS broken on 5.15.0-48.54

Description of the Bug/Problem:

 Error saving key file: rename /etc/docker/.tmp-key.json006026767 /etc/docker/key.json: value too large for defined data

How to Reproduce:
Steps to reproduce the behavior:

  1. Go to '...'

Running docker in docker inside a shiftfs mount. No core dump or useful logs.

Expected behavior:

The same scenario works without issues in v5.16

System information:

  • OS/Distribution: Ubuntu Jammy
  • Kernelversion: 5.17.5-051705-generic

Update by @toby63:
Bug is known upstream, see https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1990849
Title: LXD containers using shiftfs on ZFS or TMPFS broken on 5.15.0-48.54

Documentation is unclear which branch to use for `5.15.x` versions of the kernel

It's not clear from the README.mds which branch to use for 5.15.x versions of the kernel.

I haven't fully tested my upgrade so I am not sure which of these two is the "correct" version or if (seemly unlikely but possible) both versions work.


Edit by toby63: Corrected version description.

DKMS error on kernel versions 5.12+

Description of the Bug/Problem:
On kernel update, dkms shows an error:

DKMS make.log for shiftfs-dkms-20210417 for kernel 5.12.1-arch1-1 (x86_64)
So 2. Mai 23:28:05 CEST 2021
make: Verzeichnis „/usr/lib/modules/5.12.1-arch1-1/build“ wird betreten
  CC [M]  /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.o
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_setxattr«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:320:21: Fehler: Übergabe des Arguments 1 von »vfs_setxattr« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  320 |  err = vfs_setxattr(lowerd, name, value, size, flags);
      |                     ^~~~~~
      |                     |
      |                     struct dentry *
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:63:18: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct dentry *«
   63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
      |                  ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:320:29: Fehler: Übergabe des Arguments 2 von »vfs_setxattr« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  320 |  err = vfs_setxattr(lowerd, name, value, size, flags);
      |                             ^~~~
      |                             |
      |                             const char *
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:63:43: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »const char *«
   63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
      |                                           ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:320:42: Warnung: Übergabe des Arguments 4 von »vfs_setxattr« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  320 |  err = vfs_setxattr(lowerd, name, value, size, flags);
      |                                          ^~~~
      |                                          |
      |                                          size_t {alias long unsigned int}
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:64:4: Anmerkung: »const void *« erwartet, aber Argument hat Typ »size_t« {alias »long unsigned int«}
   64 |    const void *, size_t, int);
      |    ^~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:320:8: Fehler: Zu wenige Argumente für Funktion »vfs_setxattr«
  320 |  err = vfs_setxattr(lowerd, name, value, size, flags);
      |        ^~~~~~~~~~~~
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:63:5: Anmerkung: hier deklariert
   63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
      |     ^~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_xattr_get«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:337:21: Fehler: Übergabe des Arguments 1 von »vfs_getxattr« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  337 |  err = vfs_getxattr(lowerd, name, value, size);
      |                     ^~~~~~
      |                     |
      |                     struct dentry *
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:53:22: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct dentry *«
   53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:337:29: Fehler: Übergabe des Arguments 2 von »vfs_getxattr« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  337 |  err = vfs_getxattr(lowerd, name, value, size);
      |                             ^~~~
      |                             |
      |                             const char *
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:53:47: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »const char *«
   53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
      |                                               ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:337:42: Warnung: Übergabe des Arguments 4 von »vfs_getxattr« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  337 |  err = vfs_getxattr(lowerd, name, value, size);
      |                                          ^~~~
      |                                          |
      |                                          size_t {alias long unsigned int}
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:54:8: Anmerkung: »void *« erwartet, aber Argument hat Typ »size_t« {alias »long unsigned int«}
   54 |        void *, size_t);
      |        ^~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:337:8: Fehler: Zu wenige Argumente für Funktion »vfs_getxattr«
  337 |  err = vfs_getxattr(lowerd, name, value, size);
      |        ^~~~~~~~~~~~
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:53:9: Anmerkung: hier deklariert
   53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
      |         ^~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_removexattr«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:364:24: Fehler: Übergabe des Arguments 1 von »vfs_removexattr« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  364 |  err = vfs_removexattr(lowerd, name);
      |                        ^~~~~~
      |                        |
      |                        struct dentry *
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:68:21: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct dentry *«
   68 | int vfs_removexattr(struct user_namespace *, struct dentry *, const char *);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:364:32: Fehler: Übergabe des Arguments 2 von »vfs_removexattr« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  364 |  err = vfs_removexattr(lowerd, name);
      |                                ^~~~
      |                                |
      |                                const char *
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:68:46: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »const char *«
   68 | int vfs_removexattr(struct user_namespace *, struct dentry *, const char *);
      |                                              ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:364:8: Fehler: Zu wenige Argumente für Funktion »vfs_removexattr«
  364 |  err = vfs_removexattr(lowerd, name);
      |        ^~~~~~~~~~~~~~~
In Datei, eingebunden von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:19:
./include/linux/xattr.h:68:5: Anmerkung: hier deklariert
   68 | int vfs_removexattr(struct user_namespace *, struct dentry *, const char *);
      |     ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_create_object«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:456:20: Fehler: Übergabe des Arguments 1 von »inode_init_owner« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  456 |   inode_init_owner(inode, diri, mode);
      |                    ^~~~~
      |                    |
      |                    struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1828:46: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1828 | void inode_init_owner(struct user_namespace *mnt_userns, struct inode *inode,
      |                       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:456:33: Warnung: Übergabe des Arguments 3 von »inode_init_owner« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  456 |   inode_init_owner(inode, diri, mode);
      |                                 ^~~~
      |                                 |
      |                                 umode_t {alias short unsigned int}
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1829:29: Anmerkung: »const struct inode *« erwartet, aber Argument hat Typ »umode_t« {alias »short unsigned int«}
 1829 |         const struct inode *dir, umode_t mode);
      |         ~~~~~~~~~~~~~~~~~~~~^~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:456:3: Fehler: Zu wenige Argumente für Funktion »inode_init_owner«
  456 |   inode_init_owner(inode, diri, mode);
      |   ^~~~~~~~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1828:6: Anmerkung: hier deklariert
 1828 | void inode_init_owner(struct user_namespace *mnt_userns, struct inode *inode,
      |      ^~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:467:31: Fehler: Übergabe des Arguments 2 von »vfs_link« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  467 |   err = vfs_link(lowerd_link, loweri_dir, lowerd_new, NULL);
      |                               ^~~~~~~~~~
      |                               |
      |                               struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1779:31: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1779 | int vfs_link(struct dentry *, struct user_namespace *, struct inode *,
      |                               ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:467:43: Fehler: Übergabe des Arguments 3 von »vfs_link« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  467 |   err = vfs_link(lowerd_link, loweri_dir, lowerd_new, NULL);
      |                                           ^~~~~~~~~~
      |                                           |
      |                                           struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1779:56: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
 1779 | int vfs_link(struct dentry *, struct user_namespace *, struct inode *,
      |                                                        ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:467:9: Fehler: Zu wenige Argumente für Funktion »vfs_link«
  467 |   err = vfs_link(lowerd_link, loweri_dir, lowerd_new, NULL);
      |         ^~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1779:5: Anmerkung: hier deklariert
 1779 | int vfs_link(struct dentry *, struct user_namespace *, struct inode *,
      |     ^~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:471:20: Fehler: Übergabe des Arguments 1 von »vfs_mkdir« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  471 |    err = vfs_mkdir(loweri_dir, lowerd_new, modei);
      |                    ^~~~~~~~~~
      |                    |
      |                    struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1773:15: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1773 | int vfs_mkdir(struct user_namespace *, struct inode *,
      |               ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:471:32: Fehler: Übergabe des Arguments 2 von »vfs_mkdir« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  471 |    err = vfs_mkdir(loweri_dir, lowerd_new, modei);
      |                                ^~~~~~~~~~
      |                                |
      |                                struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1773:40: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
 1773 | int vfs_mkdir(struct user_namespace *, struct inode *,
      |                                        ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:471:44: Warnung: Übergabe des Arguments 3 von »vfs_mkdir« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  471 |    err = vfs_mkdir(loweri_dir, lowerd_new, modei);
      |                                            ^~~~~
      |                                            |
      |                                            umode_t {alias short unsigned int}
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1774:8: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »umode_t« {alias »short unsigned int«}
 1774 |        struct dentry *, umode_t);
      |        ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:471:10: Fehler: Zu wenige Argumente für Funktion »vfs_mkdir«
  471 |    err = vfs_mkdir(loweri_dir, lowerd_new, modei);
      |          ^~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1773:5: Anmerkung: hier deklariert
 1773 | int vfs_mkdir(struct user_namespace *, struct inode *,
      |     ^~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:474:21: Fehler: Übergabe des Arguments 1 von »vfs_create« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  474 |    err = vfs_create(loweri_dir, lowerd_new, modei, excl);
      |                     ^~~~~~~~~~
      |                     |
      |                     struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1771:16: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1771 | int vfs_create(struct user_namespace *, struct inode *,
      |                ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:474:33: Fehler: Übergabe des Arguments 2 von »vfs_create« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  474 |    err = vfs_create(loweri_dir, lowerd_new, modei, excl);
      |                                 ^~~~~~~~~~
      |                                 |
      |                                 struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1771:41: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
 1771 | int vfs_create(struct user_namespace *, struct inode *,
      |                                         ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:474:45: Warnung: Übergabe des Arguments 3 von »vfs_create« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  474 |    err = vfs_create(loweri_dir, lowerd_new, modei, excl);
      |                                             ^~~~~
      |                                             |
      |                                             umode_t {alias short unsigned int}
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1772:9: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »umode_t« {alias »short unsigned int«}
 1772 |         struct dentry *, umode_t, bool);
      |         ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:474:10: Fehler: Zu wenige Argumente für Funktion »vfs_create«
  474 |    err = vfs_create(loweri_dir, lowerd_new, modei, excl);
      |          ^~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1771:5: Anmerkung: hier deklariert
 1771 | int vfs_create(struct user_namespace *, struct inode *,
      |     ^~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:477:22: Fehler: Übergabe des Arguments 1 von »vfs_symlink« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  477 |    err = vfs_symlink(loweri_dir, lowerd_new, symlink);
      |                      ^~~~~~~~~~
      |                      |
      |                      struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1777:17: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1777 | int vfs_symlink(struct user_namespace *, struct inode *,
      |                 ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:477:34: Fehler: Übergabe des Arguments 2 von »vfs_symlink« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  477 |    err = vfs_symlink(loweri_dir, lowerd_new, symlink);
      |                                  ^~~~~~~~~~
      |                                  |
      |                                  struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1777:42: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
 1777 | int vfs_symlink(struct user_namespace *, struct inode *,
      |                                          ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:477:46: Fehler: Übergabe des Arguments 3 von »vfs_symlink« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  477 |    err = vfs_symlink(loweri_dir, lowerd_new, symlink);
      |                                              ^~~~~~~
      |                                              |
      |                                              const char *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1778:3: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »const char *«
 1778 |   struct dentry *, const char *);
      |   ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:477:10: Fehler: Zu wenige Argumente für Funktion »vfs_symlink«
  477 |    err = vfs_symlink(loweri_dir, lowerd_new, symlink);
      |          ^~~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1777:5: Anmerkung: hier deklariert
 1777 | int vfs_symlink(struct user_namespace *, struct inode *,
      |     ^~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:482:20: Fehler: Übergabe des Arguments 1 von »vfs_mknod« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  482 |    err = vfs_mknod(loweri_dir, lowerd_new, modei, 0);
      |                    ^~~~~~~~~~
      |                    |
      |                    struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1775:15: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1775 | int vfs_mknod(struct user_namespace *, struct inode *, struct dentry *,
      |               ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:482:32: Fehler: Übergabe des Arguments 2 von »vfs_mknod« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  482 |    err = vfs_mknod(loweri_dir, lowerd_new, modei, 0);
      |                                ^~~~~~~~~~
      |                                |
      |                                struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1775:40: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
 1775 | int vfs_mknod(struct user_namespace *, struct inode *, struct dentry *,
      |                                        ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:482:44: Warnung: Übergabe des Arguments 3 von »vfs_mknod« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  482 |    err = vfs_mknod(loweri_dir, lowerd_new, modei, 0);
      |                                            ^~~~~
      |                                            |
      |                                            umode_t {alias short unsigned int}
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1775:56: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »umode_t« {alias »short unsigned int«}
 1775 | int vfs_mknod(struct user_namespace *, struct inode *, struct dentry *,
      |                                                        ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:482:10: Fehler: Zu wenige Argumente für Funktion »vfs_mknod«
  482 |    err = vfs_mknod(loweri_dir, lowerd_new, modei, 0);
      |          ^~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1775:5: Anmerkung: hier deklariert
 1775 | int vfs_mknod(struct user_namespace *, struct inode *, struct dentry *,
      |     ^~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_rm«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:587:19: Fehler: Übergabe des Arguments 1 von »vfs_rmdir« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  587 |   err = vfs_rmdir(loweri, lowerd);
      |                   ^~~~~~
      |                   |
      |                   struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1781:15: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1781 | int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
      |               ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:587:27: Fehler: Übergabe des Arguments 2 von »vfs_rmdir« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  587 |   err = vfs_rmdir(loweri, lowerd);
      |                           ^~~~~~
      |                           |
      |                           struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1781:40: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
 1781 | int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
      |                                        ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:587:9: Fehler: Zu wenige Argumente für Funktion »vfs_rmdir«
  587 |   err = vfs_rmdir(loweri, lowerd);
      |         ^~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1781:5: Anmerkung: hier deklariert
 1781 | int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
      |     ^~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:589:20: Fehler: Übergabe des Arguments 1 von »vfs_unlink« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  589 |   err = vfs_unlink(loweri, lowerd, NULL);
      |                    ^~~~~~
      |                    |
      |                    struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1782:16: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 1782 | int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
      |                ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:589:28: Fehler: Übergabe des Arguments 2 von »vfs_unlink« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  589 |   err = vfs_unlink(loweri, lowerd, NULL);
      |                            ^~~~~~
      |                            |
      |                            struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1782:41: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
 1782 | int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
      |                                         ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:589:9: Fehler: Zu wenige Argumente für Funktion »vfs_unlink«
  589 |   err = vfs_unlink(loweri, lowerd, NULL);
      |         ^~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1782:5: Anmerkung: hier deklariert
 1782 | int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
      |     ^~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_rename«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:637:19: Fehler: Übergabe des Arguments 1 von »vfs_rename« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  637 |  err = vfs_rename(loweri_dir_old, lowerd_old, loweri_dir_new, lowerd_new,
      |                   ^~~~~~~~~~~~~~
      |                   |
      |                   struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1796:16: Anmerkung: »struct renamedata *« erwartet, aber Argument hat Typ »struct inode *«
 1796 | int vfs_rename(struct renamedata *);
      |                ^~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:637:8: Fehler: zu viele Argumente für Funktion »vfs_rename«
  637 |  err = vfs_rename(loweri_dir_old, lowerd_old, loweri_dir_new, lowerd_new,
      |        ^~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:1796:5: Anmerkung: hier deklariert
 1796 | int vfs_rename(struct renamedata *);
      |     ^~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_permission«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:705:27: Fehler: Übergabe des Arguments 1 von »generic_permission« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  705 |  err = generic_permission(inode, mask);
      |                           ^~~~~
      |                           |
      |                           struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2868:24: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 2868 | int generic_permission(struct user_namespace *, struct inode *, int);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:705:34: Warnung: Übergabe des Arguments 2 von »generic_permission« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  705 |  err = generic_permission(inode, mask);
      |                                  ^~~~
      |                                  |
      |                                  int
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2868:49: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »int«
 2868 | int generic_permission(struct user_namespace *, struct inode *, int);
      |                                                 ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:705:8: Fehler: Zu wenige Argumente für Funktion »generic_permission«
  705 |  err = generic_permission(inode, mask);
      |        ^~~~~~~~~~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2868:5: Anmerkung: hier deklariert
 2868 | int generic_permission(struct user_namespace *, struct inode *, int);
      |     ^~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:710:25: Fehler: Übergabe des Arguments 1 von »inode_permission« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  710 |  err = inode_permission(loweri, mask);
      |                         ^~~~~~
      |                         |
      |                         struct inode *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2867:22: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
 2867 | int inode_permission(struct user_namespace *, struct inode *, int);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:710:33: Warnung: Übergabe des Arguments 2 von »inode_permission« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  710 |  err = inode_permission(loweri, mask);
      |                                 ^~~~
      |                                 |
      |                                 int
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2867:47: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »int«
 2867 | int inode_permission(struct user_namespace *, struct inode *, int);
      |                                               ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:710:8: Fehler: Zu wenige Argumente für Funktion »inode_permission«
  710 |  err = inode_permission(loweri, mask);
      |        ^~~~~~~~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2867:5: Anmerkung: hier deklariert
 2867 | int inode_permission(struct user_namespace *, struct inode *, int);
      |     ^~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_tmpfile«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:748:30: Fehler: Übergabe des Arguments 1 von »loweri->i_op->tmpfile« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  748 |  err = loweri->i_op->tmpfile(loweri, lowerd, mode);
      |                              ^~~~~~
      |                              |
      |                              struct inode *
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:748:30: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct inode *«
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:748:38: Fehler: Übergabe des Arguments 2 von »loweri->i_op->tmpfile« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  748 |  err = loweri->i_op->tmpfile(loweri, lowerd, mode);
      |                                      ^~~~~~
      |                                      |
      |                                      struct dentry *
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:748:38: Anmerkung: »struct inode *« erwartet, aber Argument hat Typ »struct dentry *«
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:748:46: Warnung: Übergabe des Arguments 3 von »loweri->i_op->tmpfile« wandelt eine Zahl in einen Zeiger um, ohne explizite Typkonvertierung [-Wint-conversion]
  748 |  err = loweri->i_op->tmpfile(loweri, lowerd, mode);
      |                                              ^~~~
      |                                              |
      |                                              umode_t {alias short unsigned int}
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:748:46: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »umode_t« {alias »short unsigned int«}
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:748:8: Fehler: Zu wenige Argumente für Funktion »loweri->i_op->tmpfile«
  748 |  err = loweri->i_op->tmpfile(loweri, lowerd, mode);
      |        ^~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: In Funktion »shiftfs_setattr«:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:764:24: Fehler: Übergabe des Arguments 1 von »setattr_prepare« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  764 |  err = setattr_prepare(dentry, attr);
      |                        ^~~~~~
      |                        |
      |                        struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:3330:21: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct dentry *«
 3330 | int setattr_prepare(struct user_namespace *, struct dentry *, struct iattr *);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:764:32: Fehler: Übergabe des Arguments 2 von »setattr_prepare« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  764 |  err = setattr_prepare(dentry, attr);
      |                                ^~~~
      |                                |
      |                                struct iattr *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:3330:46: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »struct iattr *«
 3330 | int setattr_prepare(struct user_namespace *, struct dentry *, struct iattr *);
      |                                              ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:764:8: Fehler: Zu wenige Argumente für Funktion »setattr_prepare«
  764 |  err = setattr_prepare(dentry, attr);
      |        ^~~~~~~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:3330:5: Anmerkung: hier deklariert
 3330 | int setattr_prepare(struct user_namespace *, struct dentry *, struct iattr *);
      |     ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:781:22: Fehler: Übergabe des Arguments 1 von »notify_change« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  781 |  err = notify_change(lowerd, &newattr, NULL);
      |                      ^~~~~~
      |                      |
      |                      struct dentry *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2865:19: Anmerkung: »struct user_namespace *« erwartet, aber Argument hat Typ »struct dentry *«
 2865 | int notify_change(struct user_namespace *, struct dentry *,
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:781:30: Fehler: Übergabe des Arguments 2 von »notify_change« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
  781 |  err = notify_change(lowerd, &newattr, NULL);
      |                              ^~~~~~~~
      |                              |
      |                              struct iattr *
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2865:44: Anmerkung: »struct dentry *« erwartet, aber Argument hat Typ »struct iattr *«
 2865 | int notify_change(struct user_namespace *, struct dentry *,
      |                                            ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:781:8: Fehler: Zu wenige Argumente für Funktion »notify_change«
  781 |  err = notify_change(lowerd, &newattr, NULL);
      |        ^~~~~~~~~~~~~
In Datei, eingebunden von ./include/linux/fdtable.h:16,
                 von /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:5:
./include/linux/fs.h:2865:5: Anmerkung: hier deklariert
 2865 | int notify_change(struct user_namespace *, struct dentry *,
      |     ^~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c: Auf höchster Ebene:
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:998:12: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, struct dentry *, umode_t)« {alias »int (*)(struct user_namespace *, struct inode *, struct dentry *, short unsigned int)«} von inkompatiblem Zeigertyp »int (*)(struct inode *, struct dentry *, umode_t)« {alias »int (*)(struct inode *, struct dentry *, short unsigned int)«} [-Werror=incompatible-pointer-types]
  998 |  .mkdir  = shiftfs_mkdir,
      |            ^~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:998:12: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.mkdir«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:999:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, struct dentry *, const char *)« von inkompatiblem Zeigertyp »int (*)(struct inode *, struct dentry *, const char *)« [-Werror=incompatible-pointer-types]
  999 |  .symlink = shiftfs_symlink,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:999:13: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.symlink«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1002:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)« von inkompatiblem Zeigertyp »int (*)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)« [-Werror=incompatible-pointer-types]
 1002 |  .rename  = shiftfs_rename,
      |             ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1002:13: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.rename«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1004:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct dentry *, struct iattr *)« von inkompatiblem Zeigertyp »int (*)(struct dentry *, struct iattr *)« [-Werror=incompatible-pointer-types]
 1004 |  .setattr = shiftfs_setattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1004:13: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.setattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1005:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, struct dentry *, umode_t,  bool)« {alias »int (*)(struct user_namespace *, struct inode *, struct dentry *, short unsigned int,  _Bool)«} von inkompatiblem Zeigertyp »int (*)(struct inode *, struct dentry *, umode_t,  bool)« {alias »int (*)(struct inode *, struct dentry *, short unsigned int,  _Bool)«} [-Werror=incompatible-pointer-types]
 1005 |  .create  = shiftfs_create,
      |             ^~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1005:13: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.create«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1006:12: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, struct dentry *, umode_t,  dev_t)« {alias »int (*)(struct user_namespace *, struct inode *, struct dentry *, short unsigned int,  unsigned int)«} von inkompatiblem Zeigertyp »int (*)(struct inode *, struct dentry *, umode_t,  dev_t)« {alias »int (*)(struct inode *, struct dentry *, short unsigned int,  unsigned int)«} [-Werror=incompatible-pointer-types]
 1006 |  .mknod  = shiftfs_mknod,
      |            ^~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1006:12: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.mknod«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1007:16: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, int)« von inkompatiblem Zeigertyp »int (*)(struct inode *, int)« [-Werror=incompatible-pointer-types]
 1007 |  .permission = shiftfs_permission,
      |                ^~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1007:16: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.permission«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1008:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(struct user_namespace *, const struct path *, struct kstat *, unsigned int,  unsigned int)«} von inkompatiblem Zeigertyp »int (*)(const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(const struct path *, struct kstat *, unsigned int,  unsigned int)«} [-Werror=incompatible-pointer-types]
 1008 |  .getattr = shiftfs_getattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1008:13: Anmerkung: (nahe der Initialisierung für »shiftfs_dir_inode_operations.getattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1015:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(struct user_namespace *, const struct path *, struct kstat *, unsigned int,  unsigned int)«} von inkompatiblem Zeigertyp »int (*)(const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(const struct path *, struct kstat *, unsigned int,  unsigned int)«} [-Werror=incompatible-pointer-types]
 1015 |  .getattr = shiftfs_getattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1015:13: Anmerkung: (nahe der Initialisierung für »shiftfs_file_inode_operations.getattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1018:16: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, int)« von inkompatiblem Zeigertyp »int (*)(struct inode *, int)« [-Werror=incompatible-pointer-types]
 1018 |  .permission = shiftfs_permission,
      |                ^~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1018:16: Anmerkung: (nahe der Initialisierung für »shiftfs_file_inode_operations.permission«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1019:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct dentry *, struct iattr *)« von inkompatiblem Zeigertyp »int (*)(struct dentry *, struct iattr *)« [-Werror=incompatible-pointer-types]
 1019 |  .setattr = shiftfs_setattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1019:13: Anmerkung: (nahe der Initialisierung für »shiftfs_file_inode_operations.setattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1020:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, struct dentry *, umode_t)« {alias »int (*)(struct user_namespace *, struct inode *, struct dentry *, short unsigned int)«} von inkompatiblem Zeigertyp »int (*)(struct inode *, struct dentry *, umode_t)« {alias »int (*)(struct inode *, struct dentry *, short unsigned int)«} [-Werror=incompatible-pointer-types]
 1020 |  .tmpfile = shiftfs_tmpfile,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1020:13: Anmerkung: (nahe der Initialisierung für »shiftfs_file_inode_operations.tmpfile«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1024:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(struct user_namespace *, const struct path *, struct kstat *, unsigned int,  unsigned int)«} von inkompatiblem Zeigertyp »int (*)(const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(const struct path *, struct kstat *, unsigned int,  unsigned int)«} [-Werror=incompatible-pointer-types]
 1024 |  .getattr = shiftfs_getattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1024:13: Anmerkung: (nahe der Initialisierung für »shiftfs_special_inode_operations.getattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1027:16: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct inode *, int)« von inkompatiblem Zeigertyp »int (*)(struct inode *, int)« [-Werror=incompatible-pointer-types]
 1027 |  .permission = shiftfs_permission,
      |                ^~~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1027:16: Anmerkung: (nahe der Initialisierung für »shiftfs_special_inode_operations.permission«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1028:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct dentry *, struct iattr *)« von inkompatiblem Zeigertyp »int (*)(struct dentry *, struct iattr *)« [-Werror=incompatible-pointer-types]
 1028 |  .setattr = shiftfs_setattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1028:13: Anmerkung: (nahe der Initialisierung für »shiftfs_special_inode_operations.setattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1032:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(struct user_namespace *, const struct path *, struct kstat *, unsigned int,  unsigned int)«} von inkompatiblem Zeigertyp »int (*)(const struct path *, struct kstat *, u32,  unsigned int)« {alias »int (*)(const struct path *, struct kstat *, unsigned int,  unsigned int)«} [-Werror=incompatible-pointer-types]
 1032 |  .getattr = shiftfs_getattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1032:13: Anmerkung: (nahe der Initialisierung für »shiftfs_symlink_inode_operations.getattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1035:13: Fehler: Initialisierung von »int (*)(struct user_namespace *, struct dentry *, struct iattr *)« von inkompatiblem Zeigertyp »int (*)(struct dentry *, struct iattr *)« [-Werror=incompatible-pointer-types]
 1035 |  .setattr = shiftfs_setattr,
      |             ^~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1035:13: Anmerkung: (nahe der Initialisierung für »shiftfs_symlink_inode_operations.setattr«)
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1856:12: Fehler: Initialisierung von »int (*)(const struct xattr_handler *, struct user_namespace *, struct dentry *, struct inode *, const char *, const void *, size_t,  int)« {alias »int (*)(const struct xattr_handler *, struct user_namespace *, struct dentry *, struct inode *, const char *, const void *, long unsigned int,  int)«} von inkompatiblem Zeigertyp »int (*)(const struct xattr_handler *, struct dentry *, struct inode *, const char *, const void *, size_t,  int)« {alias »int (*)(const struct xattr_handler *, struct dentry *, struct inode *, const char *, const void *, long unsigned int,  int)«} [-Werror=incompatible-pointer-types]
 1856 |  .set    = shiftfs_xattr_set,
      |            ^~~~~~~~~~~~~~~~~
/var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.c:1856:12: Anmerkung: (nahe der Initialisierung für »shiftfs_xattr_handler.set«)
cc1: Einige Warnungen werden als Fehler behandelt
make[1]: *** [scripts/Makefile.build:271: /var/lib/dkms/shiftfs-dkms/20210417/build/shiftfs.o] Fehler 1
make: *** [Makefile:1851: /var/lib/dkms/shiftfs-dkms/20210417/build] Fehler 2
make: Verzeichnis „/usr/lib/modules/5.12.1-arch1-1/build“ wird verlassen

Expected behavior:
Kernel module should build.

System information:

OS/Distribution: Arch Linux
Kernelversion: 5.12.1.arch1-1
dkms-version: 2.8
shiftfs-dkms-version: k5.11 (recent)

Workaround:
I suspect this error to occur on the whole 5.12 branch (though I haven't tested that yet), so users should probably stay on the 5.11 branch or lower for now.
On Arch linux for example, the linux-lts package provides the 5.10 branch.


@brauner

Regex issue in dkms.conf for BUILD_EXCLUSIVE

Description of the Bug/Problem: Error! The /var/lib/dkms/shiftfs/k518/5.19.0-1025-aws/x86_64/dkms.conf for module shiftfs includes a BUILD_EXCLUSIVE directive which does not match this kernel/arch.

How to Reproduce:
Steps to reproduce the behavior:

  1. Go to 'shifts repo'
  2. Then, run the command sudo make -f Makefile.dkms as given in the installation process.
  3. While it is trying to build, it got failed.
    mkdir -p '/usr/src/shiftfs-k518' cp Makefile shiftfs.c '/usr/src/shiftfs-k518' sed 's/#MODULE_VERSION#/k518/' dkms.conf > '/usr/src/shiftfs-k518/dkms.conf' dkms build -m shiftfs -v k518 Error! The /var/lib/dkms/shiftfs/k518/5.19.0-1025-aws/x86_64/dkms.conf for module shiftfs includes a BUILD_EXCLUSIVE directive which does not match this kernel/arch. This indicates that it should not be built. make: *** [Makefile.dkms:16: build] Error 9

I tried changing the regex expression from BUILD_EXCLUSIVE_KERNEL="^(5.[18-19]+.|6.0.)" to BUILD_EXCLUSIVE_KERNEL="^(5.[18,19]+.|6.0.)" in dkms.conf file. Then, it has been installed.

System information:

  • OS/Distribution: Ubuntu
  • Kernelversion: 5.19
  • shiftfs-dkms-version: k518

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.