From: Joshua J. B. <con...@co...> - 2005-05-18 19:10:11
|
On Wed, May 18, 2005 at 08:54:38PM +0200, Valient Gough wrote: > On Wednesday 18 May 2005 20:19, Joshua J. Berry wrote: > > On Wed, May 18, 2005 at 07:43:00PM +0200, Valient Gough wrote: > > > If you are interested in the kernel level communication, you can look= in > > > the kernel/fuse_kernel.h header file which shows the structures the F= USE > > > kernel module uses for communicating with user programs (like libfuse= ). > > > > Yeah, that's what I've been looking at. I have decided I want an > > Inode-based interface for my filesystem (which is in C++), hence my > > question. >=20 > A small warning -- using the kernel interface isn't as easy as using the= =20 > interface that libfuse provides.. The kernel interface has changed more= =20 > often then the libfuse interface, and it isn't as well documented. If yo= u=20 > are going to write an interface to the FUSE kernel module, consider that = you=20 > are writing a replacement for libfuse in addition to your filesystem. I know. But I'm currently using libfuse, and the path-based API makes thin= gs somewhat more complicated for me. (Each inode is a C++ object ... how do I= know when the OS is done with a given inode and I can release it from my inode c= ache? Plus I have to do lookups starting at the root every single time a user pro= cess accesses the filesystem (well, with the exception of open files in FUSE 2.2= ) ... that's pretty inefficient.) I think in the long run, it will probably be simpler for me to write my cod= e for an inode-based API, and use the FUSE kernel interface directly as a stopgap until an official inode-based API is available. > I have a C++ filesystem (freshmeat.net/projects/encfs) which uses libfuse= =2E =20 > Miklos has added a lot of functionality to the libfuse api lately, so I t= hink=20 > I wouldn't gain all that much in moving over to an inode based interface.= =2E. >=20 > There's been talk about inode based interfaces on this list before, you m= ight=20 > check the archives - I know there had been some work on an inode interfac= e=20 > layer. I've looked, but I never found anything substantial that I could use... per= haps I missed something? I would much prefer to use an API than have to parse kernel messages direct= ly. ;) Thanks. -- Josh --=20 Joshua J. Berry "I haven't lost my mind -- it's backed up on tape somewhere." -- /usr/games/fortune |