readdir.c: d_off instead of d_reclen [PATCH]

Jeff Johnston jjohnstn@redhat.com
Fri Jun 3 19:35:00 GMT 2005


Shaun Jackman wrote:
> I retract this patch. Although the non-Linux kernel I was inspecting
> uses d_off as I described in the patch, the Linux kernel clearly does
> not. Some experimentation shows that d_off is an absolute offset and
> not relative to the current record. Frustratingly, it does not appear
> to reflect the data returned by getdents at all. It must be used
> internally to the kernel, perhaps reflecting the way the data is
> stored on disk. I do not understand why the kernel would massage the
> data so much moving it from disk to user space, but it appears to
> shuffle the records around leaving gaps between the records and
> updating d_reclen to reflect the gaps, but the kernel does not update
> d_off.
> 
> If someone has an explanation as to what mischief the Linux kernel's
> getting up to here, I'd be very interested in hearing it.
> 
> Cheers,
> Shaun
> 
> On 6/3/05, Shaun Jackman <sjackman@gmail.com> wrote:
> 
>>The getdents(2) manual page indicates d_off should be used as the
>>offset to the next dirent.
>>
>>Cheers,
>>Shau
> 
> n

I didn't see this when I just sent a response to your previous note.  I guess I 
retract that as well :)

-- Jeff J.



More information about the Newlib mailing list