+2002-09-04 Ion Badulescu <ion@guppy.limebrokerage.com>
+
+ * amd/srvr_nfs.c (nfs_timed_out): allocate a new XID on server
+ timeout to avoid problems with late ping replies [patch from
+ George Ross ported from 6.1]
+
2002-07-11 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
* scripts/expn.{1,in}: fixed typos as reported by Thomas Klausner
*
* %W% (Berkeley) %G%
*
- * $Id: srvr_nfs.c,v 1.7.2.6 2002/01/21 00:49:42 ezk Exp $
+ * $Id: srvr_nfs.c,v 1.7.2.7 2002/09/04 20:13:28 ib42 Exp $
*
*/
* Another ping has failed
*/
np->np_ping++;
+ if (np->np_ping > 1)
+ srvrlog(fs, "not responding");
/*
* Not known to be up any longer
*/
- if (FSRV_ISUP(fs)) {
+ if (FSRV_ISUP(fs))
fs->fs_flags &= ~FSF_VALID;
- if (np->np_ping > 1)
- srvrlog(fs, "not responding");
- }
/*
* If ttl has expired then guess that it is dead
*/
if (np->np_ttl < clocktime()) {
int oflags = fs->fs_flags;
+ dlog("ttl has expired");
if ((fs->fs_flags & FSF_DOWN) == 0) {
/*
* Server was up, but is now down.
}
if (oflags != fs->fs_flags && (fs->fs_flags & FSF_WANT))
wakeup_srvr(fs);
+ /*
+ * Reset failed ping count
+ */
+ np->np_ping = 0;
} else {
#ifdef DEBUG
if (np->np_ping > 1)
#endif /* DEBUG */
}
+ /*
+ * New RPC xid, so any late responses to the previous ping
+ * get ignored...
+ */
+ np->np_xid = NPXID_ALLOC(struct );
+
/*
* Run keepalive again
*/