Re: AVFS (but not only) + FUSE : access() returns W_OK, but opening r+ fails

Miklos Szeredi <[email protected]> Wed, 02 May 2007 12:36:46 +0200
Newsgroups gmane.comp.file-systems.fuse.devel,gmane.comp.file-systems.avfs.user
Message-ID <[email protected]>
[CC'd avf-user as well]

> > > So, even though access() reports that it's ok to open the file
> > > for reading and for writing, trying to open it read/write fails.
> > >
> > > I've initially suspected a bug in AVFS, but a quick look at the
> > > code seems to suggest that AVFS might be doing the right thing
> > > (returning -EACCES when bit 2 in the mode is set). This, plus
> > > the fact that it also happens with other FUSE filesystems, makes
> > > me suspect that FUSE might be the culprit, but OTOH I can't see
> > > anything obviously wrong in the FUSE code either.
> > >
> > > So I decided to pass the question over to more experienced
> > > people: is it a FUSE or an AVFS (and coincidentally smbnetfs)
> > > bug? In either case, how could it be fixed?
> >
> > Thanks for the nice report.
> >
> > Here's an untested patch for avfsd, which should solve the issue.
> >
> > The "access" method is new in the 2.5 version of the fuse API, and
> > so there's a bit more code shuffling in there, not just the
> > addition of this method.
> >
> > Does this fix your problem?
> >
> 
> [snip]
> 
> Yes it does! The simple test_access file now returns the correct
> answer, and amarok finds the tags and proper file length (it lags a
> little while loading the playlist, but that's understandable, given
> that it has to unpack the archive).

OK, Thanks for testing.

> I'll now see if this also fixes some of the odd cache issues I was
> having. If not, I'll bring up the matter here.
> 
> What about this patch? Should I post it over to the avfs tracker or
> will you take care of it?

I've committed it to CVS.

> (BTW, is it just an impression of mine or is avfs development a little
> on the, uhm, 'steady' state? It would be a pity if the project was
> abandoned, for me it's really *the* main reason to use FUSE ... maybe
> the codebase is too large, with it trying to  work will all those
> different interfaces? (fuse, coda, etc))

It's definitely not abandoned, Ralf is taking good care of it, and
does releases once in a while.

The biggest problem with avfs/fuse is I think the lack of the "magic"
access to archived files in the normal filesystem.  What I mean, is
that

  ls foobar.zip#/

or

  ls foobar.zip/

should just work, as it used to with the "LD_PRELOAD hack" and later
the "redir hack".  On a moder linux system this doesn't work any more.
Progress in linux should not be blamed for this, it is rather that the
old hacks which made it possible have been slowly cleaned up.  And so
now we're forced to do this properly, which is not trivial.

But I'm planning to spend some time on figuring it out.  I've been
promising this for a long time, but fuse related things have had a
priority...

Anyway, thanks for the testing and encouragement :)

Miklos

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/