Bug 27408

Summary: rc.network hangs at rpc.umntall if stale NFS mounts exist in /var/db/mounttab
Product: Base System Reporter: Brian Candler <B.Candler>
Component: confAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.2-RELEASE   
Hardware: Any   
OS: Any   

Description Brian Candler 2001-05-17 14:30:01 UTC
FreeBSD-4.2 preserves NFS state across reboots in /var/db. I had a
classful of machines which had temporarily mounted an NFS server - there
was no entry in /etc/fstab. However once these machines had been powered
down, moved, renumbered and rebooted (and the NFS servers gone), I found
they hung during bootup.

The problem was traced to the following in /etc/rc.network:

        if [ -f /var/db/mounttab ]; then
                rpc.umntall -k
        fi

Each of the workstations was then in a badly broken state, which even
a further reboot could not repair. To fix them required:
- boot into single-user mode
- fsck -y /var
- mount /var
- rm /var/db/mounttab
- fsck -y <all other partitions>
on all machines.

Fix: 

Not sure. Perhaps sensible (short) timeouts. Perhaps rpc.umntall should
remove mounttab entries _before_ attempting to contact the servers -
then at least a second reboot would clear the problem.

RFC1813 says of the UMNTALL call:
     "since this procedure
      is generally implemented using broadcast RPC, it is only
      of limited usefullness."

I know very little about NFS, but personally I don't think this sort
of state should be maintained across a reboot at all.
How-To-Repeat: Mount an NFS server just using 'mount' at the command line (no entry
in /etc/fstab).
Power off both the client and the NFS server.
Power up the client. Watch it hang.
Comment 1 iedowse freebsd_committer freebsd_triage 2002-01-13 16:05:41 UTC
State Changed
From-To: open->feedback


There were a number of bugs in rpc.umntall that have been fixed 
recently, including a bug that prevented you from simply hitting 
^C to let the boot process continue, and old entries weren't expired 
aas they should be. There are short timeouts set, but RPC calls 
require portmap lookups, and these seem to wait up to 60 seconds 
for a reply by default, so your machines probably would have 
booted after a delay of a few minutes. 

Is the corrected entry expiration and the ability to interrupt 
rpc.umntall an acceptable solution to this?
Comment 2 Jens Schweikhardt freebsd_committer freebsd_triage 2002-08-09 20:33:13 UTC
State Changed
From-To: feedback->closed

Feedback timeout.