nfs41: add mount command option minorversion
authorMike Sager <sager@netapp.com>
Wed, 1 Apr 2009 13:21:48 +0000 (09:21 -0400)
committerBenny Halevy <bhalevy@panasas.com>
Wed, 17 Jun 2009 17:46:15 +0000 (10:46 -0700)
mount -t nfs4 -o minorversion=[0|1] specifies whether to use 4.0 or 4.1.
By default, the minorversion is set to 0.

Signed-off-by: Mike Sager <sager@netapp.com>
[set default minorversion to 0 as per Trond and SteveD's request]
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/internal.h
fs/nfs/super.c

index e4d6a8348adf5178a8d7d63b85a96fe22e0d129b..ffa6bd54d439174d8ffd6a5b6ffd7d7e0292208b 100644 (file)
@@ -44,6 +44,7 @@ struct nfs_parsed_mount_data {
        unsigned int            auth_flavor_len;
        rpc_authflavor_t        auth_flavors[1];
        char                    *client_address;
+       unsigned int            minorversion;
        char                    *fscache_uniq;
 
        struct {
index d2d67781c579f34d3990dbe17706e9f98994bfea..5a8fdc791cc13dcb75e4646a4082e890bd9db875 100644 (file)
@@ -90,6 +90,7 @@ enum {
        Opt_mountport,
        Opt_mountvers,
        Opt_nfsvers,
+       Opt_minorversion,
 
        /* Mount options that take string arguments */
        Opt_sec, Opt_proto, Opt_mountproto, Opt_mounthost,
@@ -155,6 +156,7 @@ static const match_table_t nfs_mount_option_tokens = {
        { Opt_mountvers, "mountvers=%u" },
        { Opt_nfsvers, "nfsvers=%u" },
        { Opt_nfsvers, "vers=%u" },
+       { Opt_minorversion, "minorversion=%u" },
 
        { Opt_sec, "sec=%s" },
        { Opt_proto, "proto=%s" },
@@ -1211,6 +1213,13 @@ static int nfs_parse_mount_options(char *raw,
                                nfs_parse_invalid_value("nfsvers");
                        }
                        break;
+               case Opt_minorversion:
+                       if (match_int(args, &option))
+                               return 0;
+                       if (option < 0 || option > NFS4_MAX_MINOR_VERSION)
+                               return 0;
+                       mnt->minorversion = option;
+                       break;
 
                /*
                 * options that take text values
@@ -2261,6 +2270,7 @@ static int nfs4_validate_mount_data(void *options,
        args->nfs_server.port   = NFS_PORT; /* 2049 unless user set port= */
        args->auth_flavors[0]   = RPC_AUTH_UNIX;
        args->auth_flavor_len   = 0;
+       args->minorversion      = 0;
 
        switch (data->version) {
        case 1: