Re: VFS Problem: close returns void

Derek Atkins (warlord@mit.edu)
05 Dec 1996 20:03:39 -0500


alan@lxorguk.ukuu.org.uk (Alan Cox) writes:

>
> > POSIX compliant", I still believe that the kernel should be able to
> > inform the user that a close failed. Filesystems that perform
> > write-through caching wont be affected at all, but filesystems that
> > behave like AFS will still be able to let users know when they go over
> > quota writing a file.
>
> The obvious answer would be to copy the SunOS NFS response to this case.
> Its part of a more general lack of ability to pass errors back cleanly
> issue. Its going to attack us for NFS write behind too

I'm not sure what the "SunOS NFS response" is. I'd be willing to copy
it if I did. However, in my mind, the best solution would be to
change the VFS close() [oops -- release()] method to return an int
instead of returning void. Then the filesystem would have a way to
return errors.

Luckily, this is only an in-kernel issue, the libc interface will
DTRT. Unfortunately, it would require changing all calls to the
release() inode operations everywhere, which is in a lot of places (I
haven't done a thorough check). It would also break filesystem
modules. However, I'm willing to live with that (and I maintain one
myself, AFS), since it will fix these problems in the long run.

I'm willing to create patches and supply them to Linus, if people
(Linus?) think(s) it's a good idea. I'm just not sure whether to
supply patches off 2.0.27 or 2.1.x (whatever the most recent x is ;)

-derek