[Jfs-discussion] kernel BUG at namei.c:479! - when removing deep directories via "rm -rf *"
Brought to you by:
blaschke-oss,
shaggyk
From: Pascal G. <Pas...@un...> - 2003-03-20 19:00:35
|
I just wrote a little stress test programm (to evaluate a file system vor many directories and many small files), so I wrote a test program, making directories with 10 subdirs (e.g. /gross/ax/hs/je/ah/hd/be/he/za/jl/k9 and writes a 64 k file in it). Kernel is 2.4.19 with 64GB max mem and it is a SMP machine using 2 Pentium 4 CPUs (2.4 GHz each), I used jfs Version 1.1.1. After then I do a "cd /gross; rm -rf *". It gives a segmentation fault of "rm" with the following dmesg output: JFS development version: $Name: v1_1_1 $ assert(!test_cflag(COMMIT_Nolink, ip)) kernel BUG at namei.c:479! invalid operand: 0000 2.4.19-64GB-SMP #1 SMP Fri Sep 13 13:15:53 UTC 2002 CPU: 0 EIP: 0010:[<d10c1f17>] Not tainted EFLAGS: 00010296 eax: 00000027 ebx: 00000007 ecx: c553202c edx: c031bd1c esi: 00000000 edi: c907ad00 ebp: 00000033 esp: c5533f34 ds: 0018 es: 0018 ss: 0018 Process rm (pid: 1108, stackpage=c5533000) Stack: d10e1a9b d10e21a0 00000000 00000000 000b15a4 c907a700 c907ad00 00000002 c3244280 c84ef400 c907a700 c907a780 c5532000 c01626f0 c907a700 caba47a0 c6a38000 caba47a0 c5533f90 caba47a0 c016298f c907a700 caba47a0 caba4720 Call Trace: [<d10e1a9b>] [<d10e21a0>] [<c01626f0>] [<c016298f>] [<c01095c7>] Modules: [(jfs:<d10c0060>:<d10e37fc>)] Code: 0f 0b df 01 a7 1a 0e d1 5b 5e e9 9d fd ff ff 31 d2 89 c8 e8 The partition is a multipathed md device but this error also occurs on a normal connected drive with that size. The disc is a hardware raid connected via fibre channel (Q-Logic 2300 adapter). df -k: Filesystem 1K-blocks Used Available Use% Mounted on /dev/md0 1035596 79476 903512 9% / /dev/sda2 69995 6261 60120 10% /boot /dev/sdb2 69995 13 66368 1% /boot2 /dev/md2 4134832 195744 3729044 5% /usr /dev/md3 8261964 47372 7794900 1% /var shmfs 1034204 0 1034204 0% /dev/shm /dev/md5 788413044 3517100 784895944 1% /gross The test program to make these files was: #!/usr/bin/perl $riesig=""; for ($i=1;$i<=65536;$i++) { $riesig.="0"; } $prefix="/gross"; while (true) { $dir=""; for ($i=1;$i<=10;$i++) { $dir.="/".chr(int(rand(26))+97).chr(int(rand(26))+97); mkdir $prefix.$dir,0700; } $file=">".$prefix.$dir."/nuller"; open(TESTFILE,$file); print TESTFILE $riesig; close(TESTFILE); } |