From: Nikolaus R. <Nik...@ra...> - 2008-07-05 13:09:58
|
Miklos Szeredi <mi...@sz...> writes: > On Fri, 04 Jul 2008, Nikolaus Rath wrote: >> Hello, >> >> I have searched the wiki and documentation carefully, but I couldn't >> find any answers to the following questions. If I missed something, >> please just give me the pointer. Otherwise I'd be glad if someone >> could help me to understand a couple of points: >> >> - What value should I return for st_dev in getaddr? > > The value of st_dev is ignored by fuse. It's filled in by the kernel > to an "anonymous" device allocated to each fuse filesystem. > >> - Which checks are already performed on the arguments of the various >> fuse operations? E.g. do I have to check if the argument of >> readlink is actually a symlink, the argument of readdir a directory, >> or the argument of symlink does not yet exist? >> >> A quick test told me that all this is checked, but I'd like to be >> sure... > > Yes, the VFS basically does all checks, so the filesystem just needs > to perform the requested operation. > >> - Do I have to worry about race conditions? E.g. do I have to take >> care that my unlink function cannot be interrupted by an open call >> that recreates the file before it has completely been unlinked? >> >> Again I suspect that this is handled by the VFS, but I couldn't >> find it in written anywhere... > > Yes this is checked too. Thanks a lot. I have also added this to the Wiki on http://fuse.sourceforge.net/wiki/index.php/FuseInvariants >> - Am I correct that the access() function is never called if I use >> -o default_permissions? > > No, it's still called for access(2) and for chdir(2). Is there a way to pass this on to the "usual" implementations? It seems silly to be to reimplement this, because my filesystem delivers completely ordinary uid,gid and mode values. Best, -Nikolaus -- »It is not worth an intelligent man's time to be in the majority. By definition, there are already enough people to do that.« -J.H. Hardy PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C |