mirror of https://gitee.com/openkylin/linux.git
NFS: Add new 'mountaddr=' mount option
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>
This commit is contained in:
parent
aad7000735
commit
0ac83779fa
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue