>
> Hi,
>
> Using the following test.sh script :
>
> #!/bin/sh
>
> counter=1000
> while [ $counter -le 2000 ]
> do
>
> echo "File number $counter" >> file$counter
> counter=$(( $counter + 1))
> done
>
> I try to create 1000 (1001 to be precise) files in an xfs mounted directory.
> This is waht happens:
>
> beauty:/mnt/test# sh /tmp/test.sh
> beauty:/mnt/test# ls | wc
> 995 995 8955
> beauty:/mnt/test# rm *
> beauty:/mnt/test# ls
> file1144 file1291 file1438 file1585 file1732 file1879
> beauty:/mnt/test# ls
>
This looks very much like a bug we found in glibc in the getdents syscall
interface routine having to do with d_off values in the dirent structure
using bit 2^31, and getdents64 not using lseek64.. Originally it showed
up when running a 2.3 kernel as a client to an NFS server exporting
an XFS filesystem. I was thinking we'd defaulted to dir2 format, and
that should've kept us from seeing this problem, looks like more
digging is required..
> Furthermore, these files are those that are missing from the original list.
> Any idea what is happening here?
>
> By the way, the version I am running is checkout of the CVS source around
> 1130 US EST.
>
> Thanks for bring XFS to Linux
> Hway Kiong
>
> PS: Compiling XFS into the kernal makes it too large to boot :(
>
-Ted Kline
|