ECB leak while using NetWare 6.5 NFS Server

  • 7003626
  • 23-Jun-2009
  • 27-Apr-2012

Environment

Novell NetWare 6.5
Native File Access for Unix (NFAU)

Situation

ECB leak while using NetWare 6.5 NFS Server
Memory leak caused by XNFS.NLM and PKERNEL.NLM.
ECBs are leaked by NFS Services when clients request lock manager.

Resolution

NetWare 6.5 SP4 (or newer) provides a configurable fix for this issue.
 
Part of the NFS implementation requires a portmapper service to be running.  In rare situations involving a heavy load of portmapper requests over TCP, regular ECBs might be leaked in TCPIP.NLM.  Clients contact the portmapper to find out what portmapper-registered services are running and on what ports.  Usually a majority of these requests come over UDP, and usually there is not a heavy load of them on either UDP or TCP.  However, if too many portmapper requests come over TCP, the TCP portmapper server in PKERNEL.NLM may fail to respond and begin holding on to ECBs.
 
To fix this issue, take the following steps:
 
1.  Edit NFSSTART.NCF. There will not normally be a PKERNEL line already, as this NLM is typically auto-loaded by other NLMs that need it. However, add a line to the beginning of NFSSTART.NCF as follows:
 
LOAD PKERNEL -usexnfstcppmap
 
That is "use xnfs tcp pmap" but without any spaces.  This will cause PKERNEL.NLM to only serve as a UDP portmapper. Later, when XNFS.NLM loads, it will sense that PKERNEL is not servicing TCP portmapper queries, and it will automatically enable it's own TCP portmapper, which is multi-threaded for greater scalability.
 
NOTE:  If something else auto-loads PKERNEL before NFSSTART.NCF, track down the other service.  Either change the load order or insure that whichever loads fist includes the new parameter.  The only other Novell product that would auto-load PKERNEL is NFS Gateway, usually launched from GYSTART.NCF.  There could also be NFS-related commands in Cluster scripts which cause PKERNEL to be auto-loaded.
 
2. Execute NFSSTOP.  Insure that XNFS and PKERNEL have unloaded.
 
3.  Execute NFSSTART.

Additional Information

Formerly known as TID# 10096149