Bug 179085 - sys-fs/fuse-2.6.4-r1 compilation fails with 2.6.22
Bug#: 179085 Product:  Gentoo Linux Version: 2007.0 Platform: x86
OS/Version: Linux Status: RESOLVED Severity: normal Priority: P2
Resolution: FIXED Assigned To: genstef@gentoo.org Reported By: belgix@kern.com.au
Component: Core system
URL: 
Summary: sys-fs/fuse-2.6.4-r1 compilation fails with 2.6.22
Keywords:  
Status Whiteboard: 
Opened: 2007-05-19 11:08 0000
Description:   Opened: 2007-05-19 11:08 0000
With recent changes in Linux kernel sys-fs/fuse refuse to compile. Here is a
start to make a patch. Works fine and tested with sys-fs/ntfs3g-1.516 on
vanilla-sources-2.6.22-rc1.

--- /var/tmp/portage/sys-fs/fuse-2.6.4-r1/work/fuse-2.6.4/kernel/file.c
2007-05-19 19:54:45.000000000 +0930
+++ /var/tmp/portage/sys-fs/fuse-2.6.4-r1/work/fuse-2.6.4/kernel/file.c
2007-05-19 19:58:40.000000000 +0930
@@ -781,7 +781,8 @@

        if (cmd == F_GETLK) {
                if (fc->no_lock) {
-#ifdef KERNEL_2_6_17_PLUS
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 17) && \
+               LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
                        if (!posix_test_lock(file, fl, fl))
                                fl->fl_type = F_UNLCK;
 #else
--- /var/tmp/portage/sys-fs/fuse-2.6.4-r1/work/fuse-2.6.4/kernel/inode.c       
2007-05-19 20:04:35.000000000 +0930
+++ /var/tmp/portage/sys-fs/fuse-2.6.4-r1/work/fuse-2.6.4/kernel/inode.c       
2007-05-19 20:20:14.000000000 +0930
@@ -809,9 +809,14 @@
 {
        struct inode * inode = foo;

+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
+       if ((flags & (SLAB_CTOR_CONSTRUCTOR)) == SLAB_CTOR_CONSTRUCTOR)
+               inode_init_once(inode);
+#else
        if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
            SLAB_CTOR_CONSTRUCTOR)
                inode_init_once(inode);
+#endif
 }

 static int __init fuse_fs_init(void)
@@ -860,12 +865,20 @@
        if (err)
                return err;
 #endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
+       kobj_set_kset_s(&fuse_subsys, fs_subsys);
+#else
        kset_set_kset_s(&fuse_subsys, fs_subsys);
+#endif
        err = subsystem_register(&fuse_subsys);
        if (err)
                goto out_err;

+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
+       kobj_set_kset_s(&fuse_subsys, fs_subsys);
+#else
        kset_set_kset_s(&connections_subsys, fuse_subsys);
+#endif
        err = subsystem_register(&connections_subsys);
        if (err)
                goto out_fuse_unregister;

------- Comment #1 From Jakub Moc (RETIRED) 2007-05-19 11:17:01 0000 -------
Please, don't paste patches inline.

------- Comment #2 From Francois Chenier 2007-05-19 12:04:10 0000 -------
Created an attachment (id=119687) [details]
Patch to fix fuse-2.6.4-r1 ebuild

Sorry. Here is again.

------- Comment #3 From Francois Chenier 2007-05-19 23:56:57 0000 -------
Created an attachment (id=119757) [details]
Updated patch for 2.6.22-rc2

------- Comment #4 From Stefan Schweizer 2007-05-20 07:45:03 0000 -------
thank you, I committed this!