kern/84983: [udf] [patch] udf filesystem: stat-ting files could
randomly fail
Andriy Gapon
avg at icyb.net.ua
Fri Feb 1 02:27:19 PST 2008
on 01/02/2008 12:00 Andriy Gapon said the following:
> ---- a different, under-debugged problem -----
> BTW, on some smaller directories (but still large ones) I get some very
> strange problems with reading a directory too. It seems like some bad
> interaction between udf and buffer cache system. I added a lot of
> debugging prints and the problems looks like the following:
>
> read starting at physical sector (2048-byte one) N, size is ~20K, N%4=0
> bread(4 * N, some_big_size)
> correct data is read
> repeat the above couple dozen times
> read starting at physical sector (2048-byte one) N+1, size is ~20K
> bread(4 * (N+1), some_big_size)
> data is read from physical sector N+4 (instead of N+1)
>
> I remember that Bruce Evance warned me that something like this could
> happen but I couldn't understand him, because I don't understand
> VM/buffer subsystem. I'll try to dig up the email.
>
Sorry for the flood - additional info:
if I limit max read size in udf_readatoffset() to 2048 (instead of
MAXBSIZE), then large directories can be read OK. Seems like something
with overlapping buffers, maybe?
BTW, here's how I created test environment for the described issues (in
tcsh):
mkdir /tmp/bigdir
cd /tmp/bigdir
set i=1
while ($i < NNNNN)
touch file.$i
set i=`expr $i + 1`
end
cd /tmp
mkisofs -udf -o test.iso bigdir
mdconfig -a -t vnode -f test.iso -S 2048 -u 0
mount_udf /dev/md0 /mnt
ls -l /mnt
--
Andriy Gapon
More information about the freebsd-fs
mailing list