Public bug reported:

[ Impact ]

DKMS make.log for linux-apfs-rw-0.3.2-0ubuntu6.1 for kernel 6.17.0-7-generic 
(x86_64)
Wed Nov 26 18:36:47 UTC 2025
make: Entering directory '/usr/src/linux-headers-6.17.0-7-generic'
make[1]: Entering directory '/var/lib/dkms/linux-apfs-rw/0.3.2-0ubuntu6.1/build'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 
13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 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_get(struct dentry *dentry, struct fileattr 
*fa);
      |                                                            ^~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |                                                                         
            ^~~~~~~~
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_get(struct dentry *dentry, struct fileattr 
*fa);
      |                                                            ^~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |                                                                         
            ^~~~~~~~
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_get(struct dentry *dentry, struct fileattr 
*fa);
      |                                                            ^~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |                                                                         
            ^~~~~~~~
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_get(struct dentry *dentry, struct fileattr 
*fa);
      |                                                            ^~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |                                                                         
            ^~~~~~~~
  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_get(struct dentry *dentry, struct fileattr 
*fa);
      |                                                            ^~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |                                                                         
            ^~~~~~~~
  CC [M]  lzfse/lzfse_decode.o
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_get(struct dentry *dentry, struct fileattr 
*fa);
      |                                                            ^~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |                                                                         
            ^~~~~~~~
file.c: In function ‘apfs_page_mkwrite’:
file.c:57:9: error: implicit declaration of function ‘wait_for_stable_page’ 
[-Werror=implicit-function-declaration]
   57 |         wait_for_stable_page(page);
      |         ^~~~~~~~~~~~~~~~~~~~
file.c:63:14: error: implicit declaration of function ‘page_has_buffers’; did 
you mean ‘inode_has_buffers’? [-Werror=implicit-function-declaration]
   63 |         if (!page_has_buffers(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=incompatible-pointer-types]
  207 |         .fileattr_get   = apfs_fileattr_get,
      |                           ^~~~~~~~~~~~~~~~~
file.c:207:27: note: (near initialization for 
‘apfs_file_inode_operations.fileattr_get’)
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=incompatible-pointer-types]
  208 |         .fileattr_set   = apfs_fileattr_set,
      |                           ^~~~~~~~~~~~~~~~~
file.c:208:27: note: (near initialization for 
‘apfs_file_inode_operations.fileattr_set’)
cc1: some warnings being treated as errors
make[3]: *** 
[/usr/src/linux-headers-6.17.0-7-generic/scripts/Makefile.build:287: file.o] 
Error 1
make[3]: *** Waiting for unfinished jobs....
inode.c: In function ‘__apfs_write_begin’:
inode.c:517:16: error: implicit declaration of function 
‘grab_cache_page_write_begin’ [-Werror=implicit-function-declaration]
  517 |         page = grab_cache_page_write_begin(mapping, index);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
inode.c:517:14: warning: assignment to ‘struct page *’ from ‘int’ makes pointer 
from integer without a cast [-Wint-conversion]
  517 |         page = grab_cache_page_write_begin(mapping, index);
      |              ^
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_get(struct dentry *dentry, struct fileattr 
*fa);
      |                                                            ^~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |                                                                         
            ^~~~~~~~
inode.c:524:14: error: implicit declaration of function ‘page_has_buffers’; did 
you mean ‘inode_has_buffers’? [-Werror=implicit-function-declaration]
  524 |         if (!page_has_buffers(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=incompatible-pointer-types]
  657 |         ret = generic_write_end(file, mapping, pos, len, copied, 
page_folio(page), fsdata);
      |                                 ^~~~
      |                                 |
      |                                 struct file *
In file included from inode.c:7:
/usr/src/linux-headers-6.17.0-7-generic/include/linux/buffer_head.h:266:23: 
note: expected ‘const struct kiocb *’ but argument is of type ‘struct file *’
  266 | int generic_write_end(const struct kiocb *, struct address_space *,
      |                       ^~~~~~~~~~~~~~~~~~~~
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=incompatible-pointer-types]
  733 |         .write_begin    = apfs_write_begin,
      |                           ^~~~~~~~~~~~~~~~
inode.c:733:27: note: (near initialization for ‘apfs_aops.write_begin’)
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=incompatible-pointer-types]
  734 |         .write_end      = apfs_write_end,
      |                           ^~~~~~~~~~~~~~
inode.c:734:27: note: (near initialization for ‘apfs_aops.write_end’)
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_get(struct dentry *dentry, struct fileattr *fa)
      |                                                     ^~~~~~~~
inode.c:2337:5: error: conflicting types for ‘apfs_fileattr_get’; have 
‘int(struct dentry *, struct fileattr *)’
 2337 | int apfs_fileattr_get(struct dentry *dentry, struct fileattr *fa)
      |     ^~~~~~~~~~~~~~~~~
apfs.h:952:12: note: previous declaration of ‘apfs_fileattr_get’ with type 
‘int(struct dentry *, struct fileattr *)’
  952 | extern int apfs_fileattr_get(struct dentry *dentry, struct fileattr 
*fa);
      |            ^~~~~~~~~~~~~~~~~
inode.c: In function ‘apfs_fileattr_get’:
inode.c:2341:29: error: passing argument 1 of ‘fileattr_fill_flags’ from 
incompatible pointer type [-Werror=incompatible-pointer-types]
 2341 |         fileattr_fill_flags(fa, flags);
      |                             ^~
      |                             |
      |                             struct fileattr *
In file included from inode.c:18:
/usr/src/linux-headers-6.17.0-7-generic/include/linux/fileattr.h:59:45: note: 
expected ‘struct file_kattr *’ but argument is of type ‘struct fileattr *’
   59 | void fileattr_fill_flags(struct file_kattr *fa, u32 flags);
      |                          ~~~~~~~~~~~~~~~~~~~^~
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_set(struct mnt_idmap *idmap, struct dentry *dentry, 
struct fileattr *fa)
      |                                                                         
     ^~~~~~~~
inode.c:2345:5: error: conflicting types for ‘apfs_fileattr_set’; have 
‘int(struct mnt_idmap *, struct dentry *, struct fileattr *)’
 2345 | int apfs_fileattr_set(struct mnt_idmap *idmap, struct dentry *dentry, 
struct fileattr *fa)
      |     ^~~~~~~~~~~~~~~~~
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_set(struct mnt_idmap *idmap, struct dentry 
*dentry, struct fileattr *fa);
      |            ^~~~~~~~~~~~~~~~~
inode.c: In function ‘apfs_fileattr_set’:
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=incompatible-pointer-types]
 2357 |         if (fileattr_has_fsx(fa))
      |                              ^~
      |                              |
      |                              struct fileattr *
/usr/src/linux-headers-6.17.0-7-generic/include/linux/fileattr.h:68:62: note: 
expected ‘const struct file_kattr *’ but argument is of type ‘struct fileattr *’
   68 | static inline bool fileattr_has_fsx(const struct file_kattr *fa)
      |                                     ~~~~~~~~~~~~~~~~~~~~~~~~~^~
inode.c:2369:32: error: invalid use of undefined type ‘struct fileattr’
 2369 |         apfs_setflags(inode, fa->flags);
      |                                ^~
cc1: some warnings being treated as errors
make[3]: *** 
[/usr/src/linux-headers-6.17.0-7-generic/scripts/Makefile.build:287: inode.o] 
Error 1
make[2]: *** [/usr/src/linux-headers-6.17.0-7-generic/Makefile:2016: .] Error 2
make[1]: *** [/usr/src/linux-headers-6.17.0-7-generic/Makefile:248: __sub-make] 
Error 2
make[1]: Leaving directory '/var/lib/dkms/linux-apfs-rw/0.3.2-0ubuntu6.1/build'
make: *** [Makefile:248: __sub-make] Error 2
make: Leaving directory '/usr/src/linux-headers-6.17.0-7-generic'


[ Test case ]

Install the latest linux-6.17 kernel on Noble:

$ sudo add-apt-repository ppa:canonical-kernel-team/ppa3
$ sudo apt install linux-generic-hwe-24.04-edge

Install apfs-dkms:

$ sudo apt install apfs-dkms

Load the module:

$ sudo modprobe apfs

Verify the filesystem has been registered properly:

$ grep apfs /proc/filesystems

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:

[ Regression potential ]

We may experience regressions in systems that are using the Apple file
system module (apfs), especially with kernels >= 6.8 kernel.

** Affects: linux-apfs-rw (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: linux-apfs-rw (Ubuntu Noble)
     Importance: Undecided
         Status: New

** Also affects: linux-apfs-rw (Ubuntu Noble)
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2133523

Title:
  apfs-dkms FTBS in Noble with the linux-6.17-hwe kernel

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-apfs-rw/+bug/2133523/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to