Messages in this thread | | | Subject | Re: [RFC] Union mount readdir support in glibc | From | Trond Myklebust <> | Date | Fri, 14 Mar 2008 16:58:22 -0400 |
| |
On Fri, 2008-03-14 at 13:53 -0400, Peter Staubach wrote: > Miklos Szeredi wrote: > >>> Actually, do we really need it other than to 0 and to current position > >>> (i.e. full rewind and a no-op)? > >>> > >> Ever heard of the little function "telldir"? > >> > > > > Actually, telldir/seekdir is already broken for some filesystems (NFS > > comes to mind). POSIX was really crazy to require a working seekdir > > implementation, and userspace should quickly start _not_ using it.
POSIX never did require a working seekdir implementation. That requirement came from our friends in the "Open Group":
http://www.opengroup.org/onlinepubs/009695399/functions/seekdir.html
> What makes you think that telldir/seekdir don't work for NFS? The over the > wire protocols clearly take values which could be retrieved and stored via > those interfaces. > > ps
Except for the fact that the NFS cookies are unsigned (and in the case of NFSv3/v4 are 64-bit wide), whereas glibc gets confused when confronted with 'negative' telldir values.
Hence the current Linux client's wrapping of the on-the-wire cookies. As far as I can see, it is fully conformant with the spec, which has the perfect "get out of jail free" card:
"The definition of seekdir() and telldir() does not specify whether, when using these interfaces, a given directory entry will be seen at all, or more than once."
Trond
| |