Re: readdir & bonnie++

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> >My problem with bonnie happens in a test which counts how many files where
> >created. It just call readdir in loop and counts how many entries were
> >returned. As far as I understand the bonnie code, there were no files 
> >deleted
> >yet.
> >
> >I checked the glibc code (i hope that the correct one) and it seems that 
> >the
> >loop inside readdir is returned only if there are no more data in the 
> >buffer
> >and so the getdents is called again. My problem is that there SHOULD be the
> >last entry still in the buffer.
> >
> 
> So, what you're saying is that the getdents() call actually returns
> the last entry, but readdir() somehow ignores that last entry?  If
> that is the case, I would look at the d_off value for that last entry
> for weirdness.

Finally, we found that bug. Thank you all. The problem was that filp->f_pos was
set to a wrong value when EOF was detected. And this value is assigned to
->d_off of the last returned entry after returning from vfs_readdir().  This
value is checked by getdents() in glibc when checking if the kernel structures
are the same as in userspace. The wrong value was 64bit (I forgot to truncate it
to 32bits) whereas the userspace value is 32bit only :(

		Tomas
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux