This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [RFC] Union mount readdir support in glibc
- From: Trond Myklebust <trond dot myklebust at fys dot uio dot no>
- To: Peter Staubach <staubach at redhat dot com>
- Cc: Miklos Szeredi <miklos at szeredi dot hu>, drepper at redhat dot com, viro at ZenIV dot linux dot org dot uk, bharata at linux dot vnet dot ibm dot com, libc-alpha at sourceware dot org, jblunck at suse dot de, ezk at cs dot sunysb dot edu, linux-kernel at vger dot kernel dot org, linux-fsdevel at vger dot kernel dot org, hch at lst dot de, cmm at us dot ibm dot com, haveblue at us dot ibm dot com
- Date: Fri, 14 Mar 2008 16:58:22 -0400
- Subject: Re: [RFC] Union mount readdir support in glibc
- References: <20080311055527.GA7256@in.ibm.com> <47D9F6CC.6010009@redhat.com> <20080314053925.GA10722@ZenIV.linux.org.uk> <47DA257C.9060409@redhat.com> <E1Ja5Tf-0003Op-Fi@pomaz-ex.szeredi.hu> <47DABBAF.4040005@redhat.com>
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