[comp.protocols.nfs] PCNFS 3.0.1.a and MKS toolkit hangs

eric@mks.com (Eric Gisin) (12/16/89)

In article <1989Dec13.132354.791@cs.eur.nl>, henk@cs.eur.nl (Henk Langeveld) writes:
> We've encountered similar problems with MKS toolkit on PC-NFS machines.
> The problem manifests itself only when we use MKS' setup with 
> SHELL=c:\etc\init.exe  in config.sys.   I ran etherfind on the server
> to find out what was happening on the net, and the pc does a call to
> nfs RFS_LOOKUP, after which the server issues an ip arp request for
> the pc.
> 
> The arp request is strange, as the only authority on our net concerning
> host names is the server itself.

We noticed the same problem, but we did not realize it
was related to the use /etc/init in the toolkit.
After some investigation, I have found out what is going wrong.

If you have "/nfs/net start rdr ..." in /etc/rc.ksh,
a temporary /bin/sh.exe is used to execute it.
The problem with this is that sh.exe uses the timer interrupt,
and "net start rdr" tells pcnfs.sys to setup a timer interrupt.
Due to the lack of timer management in DOS,
there is no way for sh.exe to setup and restore its timer interrupt
without also removing the timer interrupt for pcnfs.sys.
Without its timer interrupt, PC-NFS works fine until a retransmission
is necessary or the arp entry on your server times out, then it hangs.

To work around this you can start PC-NFS with command.com instead of sh.exe.
Add the following line after "rc;2;wait;/bin/sh.exe /etc/rc" in /etc/inittab:
	rc;2;wait;/dos/command.com /c \nfs\rc.bat
Now copy the NFS commands from /etc/rc.ksh to /nfs/rc.bat,
and remove all the ksh quoting. It should look something like:
	rem start PC NFS -- run by /etc/init
	set NFSDRIVE=C
	\nfs\net start rdr eric *
	\nfs\net use m: \\mks\
	\nfs\net pcnfsd mks
We will allow sh.exe to run without the timer interrupt in the next release.

	Eric Gisin, MKS <eric@mks.com>