Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Jul 2001 18:46:53 +0100
From:      Ian Dowse <iedowse@maths.tcd.ie>
To:        Matt Dillon <dillon@earth.backplane.com>
Cc:        Maxim Sobolev <sobomax@FreeBSD.ORG>, current@FreeBSD.ORG
Subject:   Re: NFS client unable to recover from server crash 
Message-ID:   <200107231846.aa35761@salmon.maths.tcd.ie>
In-Reply-To: Your message of "Mon, 23 Jul 2001 09:48:21 PDT." <200107231648.f6NGmLP17709@earth.backplane.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <200107231648.f6NGmLP17709@earth.backplane.com>, 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 :-)

Ian

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi? <200107231846.aa35761>