From: Wei Yongjun <yjwei@nanjing-fnst.com>
Date: Wed, 14 Mar 2007 07:51:38 +0000 (+0800)
Subject: Use correct UMNT version to do umount
X-Git-Tag: nfs-utils-1-1-0-rc1~76
X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=d4848a7d7d849c0b8d96096707c4df3fc291b4e3;p=nfs-utils.git

Use correct UMNT version to do umount

This patch lets umount to use correct UMNT version to do umount.
In latest kernel, the version format is "vers=3" etc., and in old kernel
the version format is "v3","v4" etc.

Signed-off-by: Wei Yongjun <yjwei@nanjing-fnst.com>
Signed-off-by: Neil Brown <neilb@suse.de>
---

diff --git a/utils/mount/nfsumount.c b/utils/mount/nfsumount.c
index 28f4244..fa13725 100644
--- a/utils/mount/nfsumount.c
+++ b/utils/mount/nfsumount.c
@@ -257,6 +257,7 @@ int _nfsumount(const char *spec, const char *opts)
 	char *hostname;
 	char *dirname;
 	clnt_addr_t mnt_server = { &hostname, };
+	struct mntent mnt = { .mnt_opts = opts };
 	struct pmap *pmap = &mnt_server.pmap;
 	char *p;
 
@@ -290,14 +291,20 @@ int _nfsumount(const char *spec, const char *opts)
 	}
 
 	pmap->pm_prog = MOUNTPROG;
-	pmap->pm_vers = MOUNTVERS;
+	pmap->pm_vers = MOUNTVERS_NFSV3;
 	pmap->pm_prot = get_mntproto(spec);
 	if (opts && (p = strstr(opts, "mountprog=")) && isdigit(*(p+10)))
 		pmap->pm_prog = atoi(p+10);
 	if (opts && (p = strstr(opts, "mountport=")) && isdigit(*(p+10)))
 		pmap->pm_port = atoi(p+10);
-	if (opts && (p = strstr(opts, "nfsvers=")) && isdigit(*(p+8)))
-		pmap->pm_vers = nfsvers_to_mnt(atoi(p+8));
+	if (opts && hasmntopt(&mnt, "v2"))
+		pmap->pm_vers = nfsvers_to_mnt(2);
+	if (opts && hasmntopt(&mnt, "v3"))
+		pmap->pm_vers = nfsvers_to_mnt(3);
+	if (opts && hasmntopt(&mnt, "v4"))
+		pmap->pm_vers = nfsvers_to_mnt(4);
+	if (opts && (p = strstr(opts, "vers=")) && isdigit(*(p+5)))
+		pmap->pm_vers = nfsvers_to_mnt(atoi(p+5));
 	if (opts && (p = strstr(opts, "mountvers=")) && isdigit(*(p+10)))
 		pmap->pm_vers = atoi(p+10);