In message <[EMAIL PROTECTED]>, Matt Dillon writes:
> Ian, please don't do this. The whole point of having an uninterruptable
> mount is so the client can survive a server reboot or network failure.
> Doing this destroys uninterruptable semantics.
Firstly, I have no intention of committing this patch anytime soon,
but I think you are mistaken in what it does. Unless I messed up,
it will never allow "uninterruptible" mounts to be interrupted by
signals or to time out. I set the socket timeout to 10 seconds,
but that will have no effect because the code will simply loop
around and retry again. It is nfs_sigintr() that detects signals,
and it returns immediately unless the NFSMNT_INT mount flag is set.
Similarly, the request only times out if rep->r_rexmit >= r_retry,
but unless it is a "soft" nfs mount, r_rexmit is clamped at
NFS_MAXREXMIT, and r_retry is set to NFS_MAXREXMIT + 1, so this
can never happen.
The only effect of changing that timeout value (again assuming I
have not misread the code) is to allow any request that does get
marked R_SOFTTERM to time out within a finite period. For hard
mounts, the _only_ way that this can happen is via the new
nfs_nmcancelreqs() which is called when you do a forced unmount.
No, I haven't gone mad and decided to make all NFS mounts soft
to "fix" all NFS problems :-)
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message