]> git.decadent.org.uk Git - nfs-utils.git/commitdiff
Use correct UMNT version to do umount
authorWei Yongjun <yjwei@nanjing-fnst.com>
Wed, 14 Mar 2007 07:51:38 +0000 (15:51 +0800)
committerNeil Brown <neilb@suse.de>
Fri, 16 Mar 2007 01:30:27 +0000 (12:30 +1100)
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>
utils/mount/nfsumount.c

index 28f42448105d20efcf18a00ab77e330ccc256851..fa13725b636b23efe495cd66a73414f996688b0b 100644 (file)
@@ -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);