Re: 2.1.50 VFS: Busy inodes after unmount. Self-destruct in 5 seconds.

Andi Kleen (kdp0101@hpmail.lrz-muenchen.de)
17 Aug 1997 05:51:49 +0200


Linus Torvalds <torvalds@transmeta.com> writes:

> On Sat, 16 Aug 1997, Bill Hawes wrote:
> >
> > Craig,
> > I tried playing with a CDROM and didn't get any busy inodes, so maybe
> > the cdwriter is forgetting to release an inode.
>
> isofs was broken wrt symlinks, any symlink reading probably resulted in
> more-or-less random behaviour.
>
> I've made a pre-patch-2.1.51 that should have this fixed (thanks to the
> person who sent me the patch - I've misplaced the name but the patch
> looked fine).
I have bad problems with umounting my regular ext2 file systems with
2.1.50 too: at least one of them is still busy at reboot so it has to
be fscked.

And when I stressed the dcache a little bit (I started a gcc compilation
and continued my interactive work) the system quickly managed to corrupt
a commonly accessed dcache entry: everytime a program tried to access
or open it it crashed with a kernel null pointer reference in do_follow_link().

Here is one of the oopses (with 2.1.50):

Unable to handle kernel NULL pointer dereference at virtual address 0000004f
current->tss.cr3 = 02de5000, (r3 = 02de5000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c012913e>]
EFLAGS: 00010286
eax: c1ec6a40 ebx: c1ec6a40 ecx: c111c000 edx: ffffffff
esi: c1ec6a40 edi: c0fc1ac0 ebp: 00000001 esp: c2d01f18
ds: 0018 es: 0018 ss: 0018
Process less (pid: 1181, process nr: 31, stackpage=c2d01000)
Stack: c1ec6a40 c0ed6010 c0fc1ac0 c012930b c0fc1ac0 c1ec6a40 c0dcd5a0 0805c4d0
00000001 000084d0 c111c000 01207001 c0ed600b 00000005 0028a243 c01293ff
c0ed6000 00000000 00000001 c0dcd5a0 0805c4d0 c0ed6000 0805c4d0 c01e7e60
Call Trace: [<c012930b>] [<c01293ff>] [<c0121db3>] [<c0121f67>] [<c010924a>]
Code: 8b 42 50 85 c0 74 5d 83 78 2c 00 74 57 89 e0 89 c3 81 e3 00

Using `System.map' to map addresses to symbols.

>>EIP: c012913e <do_follow_link+12/88>
Trace: c012930b <lookup_dentry+157/190>
Trace: c01293ff <open_namei+3f/2b0>
Trace: c0121db3 <do_open+4b/134>
Trace: c0121f67 <sys_open+3b/6c>
Trace: c010924a <system_call+3a/40>

Code: c012913e <do_follow_link+12/88>
Code: c012913e <do_follow_link+12/88> 8b 42 50 movl 0x50(%edx),%eax
Code: c0129141 <do_follow_link+15/88> 85 c0 testl %eax,%eax
Code: c0129143 <do_follow_link+17/88> 74 5d je c01291a2 <do_follow_link+76/88>
Code: c0129145 <do_follow_link+19/88> 83 78 2c 00 cmpl $0x0,0x2c(%eax)
Code: c012914f <do_follow_link+23/88> 74 57 je c01291a2 <do_follow_link+76/88>
Code: c0129151 <do_follow_link+25/88> 89 e0 movl %esp,%eax
Code: c0129153 <do_follow_link+27/88> 89 c3 movl %eax,%ebx
Code: c0129155 <do_follow_link+29/88> 81 e3 00 00 90 andl $0x90900000,%ebx
Code: c0129160 <do_follow_link+34/88> 90
Code: c0129161 <do_follow_link+35/88> 90 nop
>>EIP: c012913e <do_follow_link+12/88>
Trace: c012930b <lookup_dentry+157/190>
Trace: c01293ff <open_namei+3f/2b0>
Trace: c0121db3 <do_open+4b/134>
Trace: c0121f67 <sys_open+3b/6c>
Trace: c010924a <system_call+3a/40>

-Andi