Re: nfs client problem in kernel 2.4.0

Mogens Kjaer (mk@crc.dk)
Thu, 18 Jan 2001 13:32:08 +0100


Trond Myklebust wrote:
>
> >>>>> " " == Mogens Kjaer <mk@crc.dk> writes:
> >> getdents64(3, /* 6 entries */, 65536) = 160 lseek(3,
> >> 1547825467, SEEK_SET) = 1547825467 ... getdents64(3, /* 1
> >> entries */, 65536) = 32
>
> BTW: there does in any case seem to be a bug in your version of
> glibc. getdents64() is returning 64-bit file offsets, so they're not
> going to fit with ordinary lseek().

This turned out to be more difficult than I thought...

I suspect glibc-2.2-12 being the reason, but I'm not quite sure yet:

The problem is, that the 64-bit dirent's are converted to 32-bit
dirent's
and a sanity check is performed, if the inodes or offsets don't fit into
32 bits.

The offset of the last entry is 4294967295 (no, not -1),
this won't fit in a signed 32 bit number.

Does this number come from the SGI or from the NFS stuff in the Linux
kernel?

Mogens

-- 
Mogens Kjaer, Carlsberg Laboratory, Dept. of Chemistry
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/