Ian Kent 8e3333
diff --git a/modules/replicated.c b/modules/replicated.c
Ian Kent 8e3333
index de1b40c..0764d4a 100644
Ian Kent 8e3333
--- a/modules/replicated.c
Ian Kent 8e3333
+++ b/modules/replicated.c
Ian Kent 8e3333
@@ -607,12 +607,31 @@ static int get_supported_ver_and_cost(struct host *host, unsigned int version, c
Ian Kent 8e3333
 
Ian Kent 8e3333
 	parms.pm_prog = NFS_PROGRAM;
Ian Kent 8e3333
 
Ian Kent 8e3333
+	/*
Ian Kent 8e3333
+	 *  The version passed in is the version as defined in
Ian Kent 8e3333
+	 *  include/replicated.h.  However, the version we want to send
Ian Kent 8e3333
+	 *  off to the rpc calls should match the program version of NFS.
Ian Kent 8e3333
+	 *  So, we do the conversion here.
Ian Kent 8e3333
+	 */
Ian Kent 8e3333
 	if (version & UDP_SELECTED_MASK) {
Ian Kent 8e3333
 		proto = "udp";
Ian Kent 8e3333
-		vers = (version << 8);
Ian Kent 8e3333
-	} else {
Ian Kent 8e3333
+		version >>= 8;
Ian Kent 8e3333
+	} else
Ian Kent 8e3333
 		proto = "tcp";
Ian Kent 8e3333
-		vers = version;
Ian Kent 8e3333
+
Ian Kent 8e3333
+	switch (version) {
Ian Kent 8e3333
+	case NFS2_SUPPORTED:
Ian Kent 8e3333
+		vers = NFS2_VERSION;
Ian Kent 8e3333
+		break;
Ian Kent 8e3333
+	case NFS3_SUPPORTED:
Ian Kent 8e3333
+		vers = NFS3_VERSION;
Ian Kent 8e3333
+		break;
Ian Kent 8e3333
+	case NFS4_SUPPORTED:
Ian Kent 8e3333
+		vers = NFS4_VERSION;
Ian Kent 8e3333
+		break;
Ian Kent 8e3333
+	default:
Ian Kent 8e3333
+		crit(LOGOPT_ANY, "called with invalid version: 0x%x\n", version);
Ian Kent 8e3333
+		return 0;
Ian Kent 8e3333
 	}
Ian Kent 8e3333
 
Ian Kent 8e3333
 	rpc_info.proto = getprotobyname(proto);