2.2.1x: autofs trouble

From: Kurt Garloff (garloff@suse.de)
Date: Sun Jul 02 2000 - 17:34:13 EST


Hi,

I got trouble with autofs (4.0.0-pre6) and 2.2.1x kernels.

A network of computers (behind a FW) sharing homes via NFS + autofs.
The user's homes are distributed on different machines (everybody has his
home on the one he normally uses) and gets NFS exported (KNFSD) to the
friends.
/home is actually a automount dir. The subdirs get either symlinked to
real-home (if home is local) or NFS mounted from the real-home from another
host.

The trouble starts when the latter fails.
Sometimes nothing happens, and you succeed to log in an empty home.
Most of the times, something bad is going on:
You also land in an empty home, but if you look what the autofs directory
looks like, you get scared:
The same directory a couple of times, without one of them being accessible.
The kernel does not recover from this. As soon as you try to unmount resp.
kill automount, you get an Oops.

Jul 2 23:52:39 gum03 automount[468]: parse(sun): gathered options: fstype=nfs,rsize=8192,wsize=8192,intr,nosuid,nodev
Jul 2 23:52:39 gum03 automount[468]: parse(sun): dequote("etpgum:/real-home/garloff") -> etpgum:/real-home/garloff
Jul 2 23:52:39 gum03 automount[468]: parse(sun): core of entry: options=fstype=nfs,rsize=8192,wsize=8192,intr,nosuid,nodev, loc=etpgum:/real-home/garloff
Jul 2 23:52:39 gum03 automount[468]: parse(sun): mounting root /home, mountpoint garloff/, what etpgum:/real-home/garloff, fstype nfs, options rsize=8192,wsize=8192,intr,nosuid,nodev
Jul 2 23:52:39 gum03 automount[468]: mount(nfs): root=/home name=garloff/ what=etpgum:/real-home/garloff, fstype=nfs, options=rsize=8192,wsize=8192,intr,nosuid,nodev
Jul 2 23:52:39 gum03 automount[468]: mount(nfs): nfs options="rsize=8192,wsize=8192,intr,nosuid,nodev", nosymlink=0
Jul 2 23:52:39 gum03 automount[468]: mount(nfs): calling mkdir_path /home/garloff/
Jul 2 23:52:39 gum03 automount[468]: mount(nfs): calling mount -t nfs -s -o rsize=8192,wsize=8192,intr,nosuid,nodev etpgum:/real-home/garloff /home/garloff/
Jul 2 23:52:39 gum03 automount[468]: >> mount: etpgum:/real-home/garloff failed, reason given by server: Permission denied
Jul 2 23:52:39 gum03 automount[468]: mount(nfs): nfs: mount failure etpgum:/real-home/garloff on /home/garloff/
Jul 2 23:52:39 gum03 automount[468]: mount(nfs): nfs: rmdir ("/home/garloff/") = 0
Jul 2 23:52:46 gum03 automount[178]: shutting down, path = /misc
Jul 2 23:52:46 gum03 automount[193]: shutting down, path = /etp
Jul 2 23:52:46 gum03 automount[217]: shutting down, path = /novell
Jul 2 23:52:46 gum03 automount[183]: shutting down, path = /home
Jul 2 23:52:46 gum03 kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000008
Jul 2 23:52:46 gum03 kernel: current->tss.cr3 = 0db26000, %cr3 = 0db26000
Jul 2 23:52:46 gum03 kernel: *pde = 00000000
Jul 2 23:52:46 gum03 kernel: OopOAs: 0000
Jul 2 23:52:46 gum03 kernel: CPU: 0
Jul 2 23:52:46 gum03 kernel: EIP: 0010:[kmem_cache_free+64/372]
Jul 2 23:52:46 gum03 kernel: EFLAGS: 00010086
Jul 2 23:52:46 gum03 kernel: eax: 0000007c ebx: cd119a20 ecx: 00000000 edx: cd119a9c
Jul 2 23:52:46 gum03 kernel: esi: cffff620 edi: 00000282 ebp: cd9636a4 esp: cda19f2c
Jul 2 23:52:46 gum03 kernel: ds: 0018 es: 0018 ss: 0018
Jul 2 23:52:46 gum03 kernel: Process automount (pid: 183, process nr: 20, stackpage=cda19000)
Jul 2 23:52:46 gum03 kernel: Stack: cdb89400 cd9636a4 cd119a9c cd119aa0 c01331e7 cffff620 cd119a20 cd119a20
Jul 2 23:52:46 gum03 kernel: cd119aa0 c01334f8 cd119a20 00000000 00000000 ce77d8c0 d084e420 cdb89400
Jul 2 23:52:46 gum03 kernel: ce77d8e4 ce77d8c0 00000000 00000001 d084e2ce ce77d8c0 cd950960 ffffffe7
Jul 2 23:52:46 gum03 kernel: Call Trace: [dput+223/328] [shrink_dcache_sb+284/296] [autofs:autofs_catatonic_mode+116/552] [autofs:is_autofs_dentry+298/520] [sys_ioctl+421/444] [system_call+52/56]
Jul 2 23:52:46 gum03 kernel: Code: 8b 69 08 81 fd 2b 2f c3 a5 0f 85 d9 00 00 00 8b 69 0c 85 ed

Options used: -V (default)
              -o /lib/modules/2.2.16/ (default)
              -k /proc/ksyms (default)
              -l /proc/modules (default)
              -m /usr/src/linux/System.map (default)
              -c 1 (default)

Code: 00000000 Before first symbol 00000000 <_IP>: <===
Code: 00000000 Before first symbol 0: 8b 69 08 movl 0x8(%ecx),%ebp <===
Code: 00000003 Before first symbol 3: 81 fd 2b 2f c3 a5 cmpl $0xa5c32f2b,%ebp
Code: 00000009 Before first symbol 9: 0f 85 d9 00 00 00 jne 000000e8 Before first symbol
Code: 0000000f Before first symbol f: 8b 69 0c movl 0xc(%ecx),%ebp
Code: 00000012 Before first symbol 12: 85 ed testl %ebp,%ebp

The problem seems to be in the kernel.
The NFS mount module of automount does correctly see that the mount failed
and does rmdir() the path (with a status of 0).

However, some race must have happened in between; maybe another process
triggering another mount? Or just the inode of the dir being busy, as some
looged in with it as home dir, so it can't be removed?
If you just do a couple of ls ot the failing dir, you won't see the problem.
(Maybe you will after some trials?) Or just a bookkeeping error in autofs?

Anybody any clue?

-- 
Kurt Garloff  <garloff@suse.de>                          Eindhoven, NL
GPG key: See mail header, key servers         Linux kernel development
SuSE GmbH, Nuernberg, FRG                               SCSI, Security


- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Jul 07 2000 - 21:00:12 EST