Subject: bin/7350: AMD nolonger mounting from servers that only support NFS/UDP
To: None <gnats-bugs@gnats.netbsd.org>
From: Richard Earnshaw <rearnsha@cambridge.arm.com>
List: netbsd-bugs
Date: 04/09/1999 18:24:08
>Number: 7350
>Category: bin
>Synopsis: AMD nolonger mounting from servers that only support NFS/UDP
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: bin-bug-people (Utility Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Apr 9 10:35:01 1999
>Last-Modified:
>Originator: rearnsha
>Organization:
ARM
--
>Release: NetBSD-current 19990408<NetBSD-current source date>
>Environment:
System: NetBSD shark1 1.4_ALPHA NetBSD 1.4_ALPHA (SHARK) #28: Thu Apr 8 10:58:42 BST 1999 rearnsha@shark1:/work/rearnsha/netbsd/sys/arch/arm32/compile/SHARK arm32
>Description:
On 30 March, the ordering for checking UDP vs TCP NFS mounts was
changed to check UDP before TCP. Since this time, it is no-longer
possible to mount a file system from an NFS server that only supports
UDP mounting (our NETAPP falls into this category).
Turning on full logging for amd gives:
amd[803]: get_nfs_version: returning (3,udp) on host rogangosh
amd[803]: get_nfs_version NFS(3,tcp) failed for rogangosh :: RPC: Program not registered
amd[803]: Using NFS version 3, protocol udp on host rogangosh
amd[803]: start_ping: nfs_version: 3
amd[803]: get_nfs_version: returning (3,udp) on host rogangosh
amd[803]: get_nfs_version NFS(3,tcp) failed for rogangosh :: RPC: Program not registered
amd[803]: Using NFS version 3, protocol udp on host rogangosh
amd[803]: get_nfs_version: returning (3,udp) on host rogangosh
amd[803]: get_nfs_version NFS(3,tcp) failed for rogangosh :: RPC: Program not registered
amd[803]: Using NFS version 3, protocol udp on host rogangosh
amd[803]: get_nfs_version: returning (3,udp) on host rogangosh
amd[803]: get_nfs_version NFS(3,tcp) failed for rogangosh :: RPC: Program not registered
amd[803]: Using NFS version 3, protocol udp on host rogangosh
amd[803]: get_nfs_version: returning (3,udp) on host rogangosh
amd[803]: get_nfs_version NFS(3,tcp) failed for rogangosh :: RPC: Program not registered
amd[803]: Using NFS version 3, protocol udp on host rogangosh
amd[803]: get_nfs_version: returning (3,udp) on host rogangosh
amd[803]: get_nfs_version NFS(3,tcp) failed for rogangosh :: RPC: Program not registered
amd[803]: Using NFS version 3, protocol udp on host rogangosh
amd[803]: file server rogangosh type nfs starts down
amd[803]: get_nfs_version: returning (3,udp) on host rogangosh
amd[803]: get_nfs_version NFS(3,tcp) failed for rogangosh :: RPC: Program not registered
amd[803]: Using NFS version 3, protocol udp on host rogangosh
A slowlaris snoop gives an idea what is happening over the wire.
shark1 -> rogangosh PORTMAP C Null
rogangosh -> shark1 PORTMAP R Null
shark1 -> rogangosh PORTMAP C GETPORT prog=100003 (NFS) vers=3 proto=UDP
rogangosh -> shark1 PORTMAP R GETPORT port=2049
shark1 -> rogangosh NFS C NULL3
rogangosh -> shark1 NFS R NULL3
shark1 -> rogangosh PORTMAP C Null
rogangosh -> shark1 PORTMAP R Null
shark1 -> rogangosh PORTMAP C GETPORT prog=100003 (NFS) vers=3 proto=TCP
rogangosh -> shark1 PORTMAP R GETPORT port=0
shark1 -> rogangosh PORTMAP C Null
rogangosh -> shark1 PORTMAP R Null
shark1 -> rogangosh PORTMAP C GETPORT prog=100003 (NFS) vers=3 proto=UDP
rogangosh -> shark1 PORTMAP R GETPORT port=2049
shark1 -> rogangosh NFS C NULL3
rogangosh -> shark1 NFS R NULL3
shark1 -> rogangosh PORTMAP C Null
rogangosh -> shark1 PORTMAP R Null
shark1 -> rogangosh PORTMAP C GETPORT prog=100003 (NFS) vers=3 proto=TCP
rogangosh -> shark1 PORTMAP R GETPORT port=0
shark1 -> rogangosh PORTMAP C Null
rogangosh -> shark1 PORTMAP R Null
shark1 -> rogangosh PORTMAP C GETPORT prog=100003 (NFS) vers=3 proto=UDP
The calls to the portmapper keep repeating until eventually timing
out.
Also, a solaris snoop of a mount from a machine that supports TCP
mounts seems to show that TCP mounting is still being preferred
over UDP.
shark1 -> alpha3 PORTMAP C Null
alpha3 -> shark1 PORTMAP R Null
shark1 -> alpha3 PORTMAP C GETPORT prog=100003 (NFS) vers=3 proto=UDP
alpha3 -> shark1 PORTMAP R GETPORT port=2049
shark1 -> alpha3 NFS C NULL3
alpha3 -> shark1 NFS R NULL3
shark1 -> alpha3 PORTMAP C Null
alpha3 -> shark1 PORTMAP R Null
shark1 -> alpha3 PORTMAP C GETPORT prog=100003 (NFS) vers=3 proto=TCP
alpha3 -> shark1 PORTMAP R GETPORT port=2049
shark1 -> alpha3 TCP D=2049 S=1007 Syn Seq=3313399801 Len=0 Win=16384
alpha3 -> shark1 TCP D=1007 S=2049 Syn Ack=3313399802 Seq=907904000
Len=0 Win=33580
shark1 -> alpha3 TCP D=2049 S=1007 Ack=907904001 Seq=3313399802
Len=0 Win=17520
shark1 -> alpha3 NFS C NULL3
alpha3 -> shark1 NFS R NULL3
shark1 -> alpha3 TCP D=2049 S=1007 Fin Ack=907904029 Seq=3313399846
Len=0 Win=17520
alpha3 -> shark1 TCP D=1007 S=2049 Ack=3313399847 Seq=907904029
Len=0 Win=33580
alpha3 -> shark1 TCP D=1007 S=2049 Fin Ack=3313399847 Seq=907904029
Len=0 Win=33580
shark1 -> alpha3 TCP D=2049 S=1007 Ack=907904030 Seq=3313399847
Len=0 Win=17520
>How-To-Repeat:
Try to automount a file system from an NFS server that doesn't support
TCP mounting.
>Fix:
revert amd/amd/srvr_nfs.c to version 1.10, but this is probably
just papering over a bug somewhere else.
>Audit-Trail:
>Unformatted: