apfs-dkms FTBS in Noble with the linux-6.17-hwe kernel
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| linux-apfs-rw (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
| Noble |
Fix Committed
|
Undecided
|
Unassigned | ||
Bug Description
[ Impact ]
DKMS make.log for linux-apfs-
Wed Nov 26 18:36:47 UTC 2025
make: Entering directory '/usr/src/
make[1]: Entering directory '/var/lib/
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-
You are using: gcc-13 (Ubuntu 13.3.0-
CC [M] btree.o
CC [M] compress.o
CC [M] dir.o
CC [M] extents.o
In file included from dir.c:8:
apfs.h:952:60: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
952 | extern int apfs_fileattr_
| ^~~~~~~~
apfs.h:953:85: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
953 | extern int apfs_fileattr_
| ^~~~~~~~
In file included from extents.c:8:
apfs.h:952:60: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
952 | extern int apfs_fileattr_
| ^~~~~~~~
apfs.h:953:85: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
953 | extern int apfs_fileattr_
| ^~~~~~~~
In file included from btree.c:8:
apfs.h:952:60: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
952 | extern int apfs_fileattr_
| ^~~~~~~~
apfs.h:953:85: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
953 | extern int apfs_fileattr_
| ^~~~~~~~
In file included from compress.c:10:
apfs.h:952:60: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
952 | extern int apfs_fileattr_
| ^~~~~~~~
apfs.h:953:85: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
953 | extern int apfs_fileattr_
| ^~~~~~~~
CC [M] file.o
CC [M] inode.o
CC [M] key.o
CC [M] libzbitmap.o
In file included from file.c:6:
apfs.h:952:60: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
952 | extern int apfs_fileattr_
| ^~~~~~~~
apfs.h:953:85: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
953 | extern int apfs_fileattr_
| ^~~~~~~~
CC [M] lzfse/lzfse_
In file included from inode.c:11:
apfs.h:952:60: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
952 | extern int apfs_fileattr_
| ^~~~~~~~
apfs.h:953:85: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
953 | extern int apfs_fileattr_
| ^~~~~~~~
file.c: In function ‘apfs_page_
file.c:57:9: error: implicit declaration of function ‘wait_for_
57 | wait_for_
| ^~~~~~~
file.c:63:14: error: implicit declaration of function ‘page_has_buffers’; did you mean ‘inode_
63 | if (!page_
| ^~~~~~~~~~~~~~~~
| inode_has_buffers
file.c:81:17: error: ‘struct page’ has no member named ‘index’
81 | if (page->index == size >> PAGE_SHIFT)
| ^~
file.c: At top level:
file.c:207:27: error: initialization of ‘int (*)(struct dentry *, struct file_kattr *)’ from incompatible pointer type ‘int (*)(struct dentry *, struct fileattr *)’ [-Werror=
207 | .fileattr_get = apfs_fileattr_get,
| ^~~~~~~~~~~~~~~~~
file.c:207:27: note: (near initialization for ‘apfs_file_
file.c:208:27: error: initialization of ‘int (*)(struct mnt_idmap *, struct dentry *, struct file_kattr *)’ from incompatible pointer type ‘int (*)(struct mnt_idmap *, struct dentry *, struct fileattr *)’ [-Werror=
208 | .fileattr_set = apfs_fileattr_set,
| ^~~~~~~~~~~~~~~~~
file.c:208:27: note: (near initialization for ‘apfs_file_
cc1: some warnings being treated as errors
make[3]: *** [/usr/src/
make[3]: *** Waiting for unfinished jobs....
inode.c: In function ‘__apfs_
inode.c:517:16: error: implicit declaration of function ‘grab_cache_
517 | page = grab_cache_
| ^~~~~~~
inode.c:517:14: warning: assignment to ‘struct page *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
517 | page = grab_cache_
| ^
In file included from key.c:7:
apfs.h:952:60: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
952 | extern int apfs_fileattr_
| ^~~~~~~~
apfs.h:953:85: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
953 | extern int apfs_fileattr_
| ^~~~~~~~
inode.c:524:14: error: implicit declaration of function ‘page_has_buffers’; did you mean ‘inode_
524 | if (!page_
| ^~~~~~~~~~~~~~~~
| inode_has_buffers
inode.c: In function ‘__apfs_write_end’:
inode.c:657:33: error: passing argument 1 of ‘generic_write_end’ from incompatible pointer type [-Werror=
657 | ret = generic_
| ^~~~
| |
| struct file *
In file included from inode.c:7:
/usr/src/
266 | int generic_
| ^~~~~~~
inode.c: At top level:
inode.c:733:27: error: initialization of ‘int (*)(const struct kiocb *, struct address_space *, loff_t, unsigned int, struct folio **, void **)’ {aka ‘int (*)(const struct kiocb *, struct address_space *, long long int, unsigned int, struct folio **, void **)’} from incompatible pointer type ‘int (*)(struct file *, struct address_space *, loff_t, unsigned int, struct folio **, void **)’ {aka ‘int (*)(struct file *, struct address_space *, long long int, unsigned int, struct folio **, void **)’} [-Werror=
733 | .write_begin = apfs_write_begin,
| ^~~~~~~~~~~~~~~~
inode.c:733:27: note: (near initialization for ‘apfs_aops.
inode.c:734:27: error: initialization of ‘int (*)(const struct kiocb *, struct address_space *, loff_t, unsigned int, unsigned int, struct folio *, void *)’ {aka ‘int (*)(const struct kiocb *, struct address_space *, long long int, unsigned int, unsigned int, struct folio *, void *)’} from incompatible pointer type ‘int (*)(struct file *, struct address_space *, loff_t, unsigned int, unsigned int, struct folio *, void *)’ {aka ‘int (*)(struct file *, struct address_space *, long long int, unsigned int, unsigned int, struct folio *, void *)’} [-Werror=
734 | .write_end = apfs_write_end,
| ^~~~~~~~~~~~~~
inode.c:734:27: note: (near initialization for ‘apfs_aops.
inode.c:2337:53: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
2337 | int apfs_fileattr_
| ^~~~~~~~
inode.c:2337:5: error: conflicting types for ‘apfs_fileattr_
2337 | int apfs_fileattr_
| ^~~~~~~~~~~~~~~~~
apfs.h:952:12: note: previous declaration of ‘apfs_fileattr_get’ with type ‘int(struct dentry *, struct fileattr *)’
952 | extern int apfs_fileattr_
| ^~~~~~~~~~~~~~~~~
inode.c: In function ‘apfs_fileattr_
inode.c:2341:29: error: passing argument 1 of ‘fileattr_
2341 | fileattr_
| ^~
| |
| struct fileattr *
In file included from inode.c:18:
/usr/src/
59 | void fileattr_
| ~~~~~~~
inode.c: At top level:
inode.c:2345:78: warning: ‘struct fileattr’ declared inside parameter list will not be visible outside of this definition or declaration
2345 | int apfs_fileattr_
| ^~~~~~~~
inode.c:2345:5: error: conflicting types for ‘apfs_fileattr_
2345 | int apfs_fileattr_
| ^~~~~~~~~~~~~~~~~
apfs.h:953:12: note: previous declaration of ‘apfs_fileattr_set’ with type ‘int(struct mnt_idmap *, struct dentry *, struct fileattr *)’
953 | extern int apfs_fileattr_
| ^~~~~~~~~~~~~~~~~
inode.c: In function ‘apfs_fileattr_
inode.c:2355:15: error: invalid use of undefined type ‘struct fileattr’
2355 | if (fa->flags & ~(FS_APPEND_FL | FS_IMMUTABLE_FL | FS_NODUMP_FL))
| ^~
inode.c:2357:30: error: passing argument 1 of ‘fileattr_has_fsx’ from incompatible pointer type [-Werror=
2357 | if (fileattr_
| ^~
| |
| struct fileattr *
/usr/src/
68 | static inline bool fileattr_
| ~~~~~~~
inode.c:2369:32: error: invalid use of undefined type ‘struct fileattr’
2369 | apfs_setflags(
| ^~
cc1: some warnings being treated as errors
make[3]: *** [/usr/src/
make[2]: *** [/usr/src/
make[1]: *** [/usr/src/
make[1]: Leaving directory '/var/lib/
make: *** [Makefile:248: __sub-make] Error 2
make: Leaving directory '/usr/src/
[ Test case ]
Install the latest linux-6.17 kernel on Noble:
$ sudo add-apt-repository ppa:canonical-
$ sudo apt install linux-generic-
Install apfs-dkms:
$ sudo apt install apfs-dkms
Package built and installed successfully.
Load the module:
$ sudo modprobe apfs
Module loaded with no issues.
Verify the filesystem has been registered properly:
$ grep apfs /proc/filesystems
apfs was listed as available fileystem.
The same procedure can be repeated on linux-6.8 to test for possible regressions.
[ Fix ]
Apply upstream patches to properly support the new linux 6.17 ABI, namely the following:
- debian/
- debian/
- debian/
- debian/
- debian/
- debian/
- debian/
[ Regression potential ]
We may experience regressions in systems that are using the Apple file system module (apfs), especially with kernels >= 6.8 kernel.

0.3.2-0ubuntu6.1 -> 0.3.2-0ubuntu6.2 debdiff