|
Ian Kent |
4e72d9a |
commit e7d1bd38b1d1de6b1bec603eeff915ebb57f3c37
|
|
Ian Kent |
4e72d9a |
Author: zoulasc <christos@zoulas.com>
|
|
Ian Kent |
4e72d9a |
Date: Thu Mar 10 17:50:34 2016 -0500
|
|
Ian Kent |
4e72d9a |
|
|
Ian Kent |
4e72d9a |
- There is really no ti-rpc nfsv4, so don't send one; instead send a v3 for now.
|
|
Ian Kent |
4e72d9a |
|
|
Ian Kent |
4e72d9a |
diff --git a/amd/srvr_nfs.c b/amd/srvr_nfs.c
|
|
Ian Kent |
4e72d9a |
index b7c852c..1418a1a 100644
|
|
Ian Kent |
4e72d9a |
--- a/amd/srvr_nfs.c
|
|
Ian Kent |
4e72d9a |
+++ b/amd/srvr_nfs.c
|
|
Ian Kent |
4e72d9a |
@@ -140,6 +140,7 @@ create_ping_payload(u_long nfs_version)
|
|
Ian Kent |
4e72d9a |
{
|
|
Ian Kent |
4e72d9a |
XDR ping_xdr;
|
|
Ian Kent |
4e72d9a |
struct rpc_msg ping_msg;
|
|
Ian Kent |
4e72d9a |
+ int rpc_version;
|
|
Ian Kent |
4e72d9a |
|
|
Ian Kent |
4e72d9a |
/*
|
|
Ian Kent |
4e72d9a |
* Non nfs mounts like /afs/glue.umd.edu have ended up here.
|
|
Ian Kent |
4e72d9a |
@@ -150,7 +151,17 @@ create_ping_payload(u_long nfs_version)
|
|
Ian Kent |
4e72d9a |
} else
|
|
Ian Kent |
4e72d9a |
plog(XLOG_INFO, "%s: nfs_version: %d", __func__, (int) nfs_version);
|
|
Ian Kent |
4e72d9a |
|
|
Ian Kent |
4e72d9a |
- rpc_msg_init(&ping_msg, NFS_PROGRAM, nfs_version, NFSPROC_NULL);
|
|
Ian Kent |
4e72d9a |
+ /*
|
|
Ian Kent |
4e72d9a |
+ * There is really no ti-rpc version for NFSv4; most servers respond
|
|
Ian Kent |
4e72d9a |
+ * with "program unavailable", which is ok since we don't check the
|
|
Ian Kent |
4e72d9a |
+ * payload, we just care about the pings. Some servers though are
|
|
Ian Kent |
4e72d9a |
+ * antisocial (Isilon) and don't respond (which is their right to do).
|
|
Ian Kent |
4e72d9a |
+ * Eventually we should make a new mechanism to do server pings for
|
|
Ian Kent |
4e72d9a |
+ * NFSv4, but for now it is easiest to downgrade the RPC version to 3.
|
|
Ian Kent |
4e72d9a |
+ */
|
|
Ian Kent |
4e72d9a |
+ rpc_version = nfs_version == 4 ? 3 : nfs_version;
|
|
Ian Kent |
4e72d9a |
+
|
|
Ian Kent |
4e72d9a |
+ rpc_msg_init(&ping_msg, NFS_PROGRAM, rpc_version, NFSPROC_NULL);
|
|
Ian Kent |
4e72d9a |
|
|
Ian Kent |
4e72d9a |
/*
|
|
Ian Kent |
4e72d9a |
* Create an XDR endpoint
|
|
Ian Kent |
4e72d9a |
@@ -600,6 +611,7 @@ nfs_keepalive(voidp v)
|
|
Ian Kent |
4e72d9a |
case ENETUNREACH:
|
|
Ian Kent |
4e72d9a |
case EHOSTDOWN:
|
|
Ian Kent |
4e72d9a |
case EHOSTUNREACH:
|
|
Ian Kent |
4e72d9a |
+ dlog("Failed to NFS ping to %s (%d)", fs->fs_host, error);
|
|
Ian Kent |
4e72d9a |
np->np_ping = MAX_ALLOWED_PINGS; /* immediately down */
|
|
Ian Kent |
4e72d9a |
np->np_ttl = (time_t) 0;
|
|
Ian Kent |
4e72d9a |
/*
|