Fuse on newer kernels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey,
as fuse 2.7.3 / 2.7.4 doesnt build on kernels 2.6.25/.26/.27 wanted to ask if it is valid to use fuse-2.8.0-pre1? I mean has anyone tested it?


Basically with the 2.7.3 patched version and also 2.7.4 clean version you get something like this:

/data/install/fuse-2.7.3glfs10/kernel/dir.c: In function ‘fuse_permission’:
/data/install/fuse-2.7.3glfs10/kernel/dir.c:860: error: ‘LOOKUP_ACCESS’ undeclared (first use in this function) /data/install/fuse-2.7.3glfs10/kernel/dir.c:860: error: (Each undeclared identifier is reported only once /data/install/fuse-2.7.3glfs10/kernel/dir.c:860: error: for each function it appears in.)
/data/install/fuse-2.7.3glfs10/kernel/dir.c: At top level:
/data/install/fuse-2.7.3glfs10/kernel/dir.c:1329: warning: initialization from incompatible pointer type /data/install/fuse-2.7.3glfs10/kernel/dir.c:1348: warning: initialization from incompatible pointer type
make[4]: *** [/data/install/fuse-2.7.3glfs10/kernel/dir.o] Error 1
make[3]: *** [_module_/data/install/fuse-2.7.3glfs10/kernel] Error 2
make[2]: *** [sub-make] Error 2


I have tracked down in 2.6.26 Changelog something like this:


commit a110343f0d6d41f68b7cf8c00b57a3172c67f816
Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Date:   Thu Jul 17 09:19:08 2008 -0400

   [PATCH] fix MAY_CHDIR/MAY_ACCESS/LOOKUP_ACCESS mess

   * MAY_CHDIR is redundant - it's an equivalent of MAY_ACCESS
* MAY_ACCESS on fuse should affect only the last step of pathname resolution
   * fchdir() and chroot() should pass MAY_ACCESS, for the same reason why
     chdir() needs that.
* now that we pass MAY_ACCESS explicitly in all cases, LOOKUP_ACCESS can be
     removed; it has no business being in nameidata.

Where it seems that LOOKUP_ACCESS has been removed...




On the other hand I could compile 2.7.4 with the performance patch ( fuse-2.7.3glfs10.diff) and when replacing in kernel/dir.c:


if (nd && (nd->flags & (LOOKUP_ACCESS | LOOKUP_CHDIR))) {

to

if (nd && (nd->flags & MAY_ACCESS)) {


Not sure if its the only place to change but for now couldnt get work on 2.6.27-rc5-git9-15-default (x86_64) .. eg it starts but get in some nasty state with an error:

Process glusterfs (pid: 24996, threadinfo ffff8802175ac000, task ffff8802118245c0)
Stack:  0000000000000000 0000000000041200 ffff8802175ada58 ffffffffa02fb6be
ffff8802175adac8 ffffffff802bbc77 0000000000000000 0000000000000000
ffff880221ce8580 0000000000000000 ffff880221ce8580 0000001000000000
Call Trace:
[<ffffffffa02fb6be>] fuse_inode_init_once+0x11/0x13 [fuse]
[<ffffffff802bbc77>] cache_grow+0x1de/0x298
[<ffffffff802bbf0e>] cache_alloc_refill+0x1dd/0x22e
[<ffffffff802bc6c3>] kmem_cache_alloc+0xfc/0x156
[<ffffffffa02fb641>] fuse_alloc_inode+0x1f/0x71 [fuse]
[<ffffffff802d799f>] alloc_inode+0x21/0x1ea
[<ffffffff802d870d>] iget5_locked+0x62/0x1cd
[<ffffffffa02fb994>] fuse_iget+0x48/0x1aa [fuse]
[<ffffffffa02fbefc>] fuse_fill_super+0x406/0x61b [fuse]
[<ffffffff802c5696>] get_sb_nodev+0x5c/0x9c
[<ffffffffa02fb164>] fuse_get_sb+0x1b/0x1d [fuse]
[<ffffffff802c53f3>] vfs_kern_mount+0xa2/0x131
[<ffffffff802c54e9>] do_kern_mount+0x4c/0xe7
[<ffffffff802dc55a>] do_new_mount+0x64/0x96
[<ffffffff802dd492>] do_mount+0x20c/0x23b
[<ffffffff802dd54f>] sys_mount+0x8e/0xd3
[<ffffffff8020c57a>] system_call_fastpath+0x16/0x1b
[<00007fde6318082a>] 0x7fde6318082a



I will try to test it back on 2.6.26... If not the only working option now stays the 2.6.24 kernel...


But any thoughts on all this mess?


rr





[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux