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;