NFS: Add new 'mountaddr=' mount option
authorChuck Lever <chuck.lever@oracle.com>
Tue, 11 Sep 2007 22:01:04 +0000 (18:01 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 9 Oct 2007 21:17:06 +0000 (17:17 -0400)
I got the 'mounthost=' option wrong - it shouldn't look for an address
value, but rather a hostname value.  However, the in-kernel mount client
and NFS client cannot resolve a hostname by themselves; they rely on
user-land to pass in the resolved address.

Create a new mount option that does take an address so that the mount
program's address can be passed in.  The mount hostname is now ignored
by the kernel.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/super.c

index 094d2f8..a955821 100644 (file)
@@ -73,6 +73,7 @@ struct nfs_parsed_mount_data {
 
        struct {
                struct sockaddr_in      address;
+               char                    *hostname;
                unsigned int            program;
                unsigned int            version;
                unsigned short          port;
@@ -116,7 +117,7 @@ enum {
 
        /* Mount options that take string arguments */
        Opt_sec, Opt_proto, Opt_mountproto,
-       Opt_addr, Opt_mounthost, Opt_clientaddr,
+       Opt_addr, Opt_mountaddr, Opt_clientaddr,
 
        /* Mount options that are ignored */
        Opt_userspace, Opt_deprecated,
@@ -175,7 +176,8 @@ static match_table_t nfs_mount_option_tokens = {
        { Opt_mountproto, "mountproto=%s" },
        { Opt_addr, "addr=%s" },
        { Opt_clientaddr, "clientaddr=%s" },
-       { Opt_mounthost, "mounthost=%s" },
+       { Opt_userspace, "mounthost=%s" },
+       { Opt_mountaddr, "mountaddr=%s" },
 
        { Opt_err, NULL }
 };
@@ -961,7 +963,7 @@ static int nfs_parse_mount_options(char *raw,
                                goto out_nomem;
                        mnt->client_address = string;
                        break;
-               case Opt_mounthost:
+               case Opt_mountaddr:
                        string = match_strdup(args);
                        if (string == NULL)
                                goto out_nomem;