On Tue, Aug 12, 2008 at 02:24:04PM -0700, Linus Torvalds wrote:
Tell that to tar(1) ;-)
I suspect that SUS specifies that crap in some cases, but I honestly do not
remember. For large offsets, that is. Large inode numbers are more recent
and hit relatively few filesystems. OTOH, I suspect that most of getdents()
call sites are in libc anyway...
Anyway, the point for getdents() is simply that we *do* return an error; it's
just that it ends up with -EINVAL instead of -EOVERFLOW, and that's simply
bogus - we should either truncate silently or return the right value. The
code definitely intends to do the latter and fucks up.
--