aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWeston Andros Adamson <dros@netapp.com>2013-10-18 15:15:17 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2013-10-28 15:37:43 -0400
commit0f5f49b8b3593309fd3c3a2080a5fd465afdbe16 (patch)
treeab7fd81174f1399b1b0be00967134a1ab981e55b
parenta3f73c27afff9590a4432879b7145289cb89cf0a (diff)
NFS: cache parsed auth_info in nfs_server
Cache the auth_info structure in nfs_server and pass these values to submounts. This lays the groundwork for supporting multiple sec= options. Signed-off-by: Weston Andros Adamson <dros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--fs/nfs/client.c2
-rw-r--r--fs/nfs/nfs4client.c1
-rw-r--r--fs/nfs/super.c3
-rw-r--r--include/linux/nfs_fs_sb.h1
4 files changed, 5 insertions, 2 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index f5a7f7f9cd59..1d09289c8f0e 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -786,6 +786,7 @@ static int nfs_init_server(struct nfs_server *server,
786 goto error; 786 goto error;
787 787
788 server->port = data->nfs_server.port; 788 server->port = data->nfs_server.port;
789 server->auth_info = data->auth_info;
789 790
790 error = nfs_init_server_rpcclient(server, &timeparms, 791 error = nfs_init_server_rpcclient(server, &timeparms,
791 data->selected_flavor); 792 data->selected_flavor);
@@ -929,6 +930,7 @@ void nfs_server_copy_userdata(struct nfs_server *target, struct nfs_server *sour
929 target->acdirmax = source->acdirmax; 930 target->acdirmax = source->acdirmax;
930 target->caps = source->caps; 931 target->caps = source->caps;
931 target->options = source->options; 932 target->options = source->options;
933 target->auth_info = source->auth_info;
932} 934}
933EXPORT_SYMBOL_GPL(nfs_server_copy_userdata); 935EXPORT_SYMBOL_GPL(nfs_server_copy_userdata);
934 936
diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
index d65090e5d00f..04131c837f27 100644
--- a/fs/nfs/nfs4client.c
+++ b/fs/nfs/nfs4client.c
@@ -962,6 +962,7 @@ static int nfs4_init_server(struct nfs_server *server,
962 /* Initialise the client representation from the mount data */ 962 /* Initialise the client representation from the mount data */
963 server->flags = data->flags; 963 server->flags = data->flags;
964 server->options = data->options; 964 server->options = data->options;
965 server->auth_info = data->auth_info;
965 966
966 if (data->auth_info.flavor_len >= 1) 967 if (data->auth_info.flavor_len >= 1)
967 data->selected_flavor = data->auth_info.flavors[0]; 968 data->selected_flavor = data->auth_info.flavors[0];
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index b87744fb9dcd..de1e5e89c93d 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -2187,8 +2187,7 @@ nfs_remount(struct super_block *sb, int *flags, char *raw_data)
2187 data->wsize = nfss->wsize; 2187 data->wsize = nfss->wsize;
2188 data->retrans = nfss->client->cl_timeout->to_retries; 2188 data->retrans = nfss->client->cl_timeout->to_retries;
2189 data->selected_flavor = nfss->client->cl_auth->au_flavor; 2189 data->selected_flavor = nfss->client->cl_auth->au_flavor;
2190 data->auth_info.flavors[0] = nfss->client->cl_auth->au_flavor; 2190 data->auth_info = nfss->auth_info;
2191 data->auth_info.flavor_len = 1;
2192 data->acregmin = nfss->acregmin / HZ; 2191 data->acregmin = nfss->acregmin / HZ;
2193 data->acregmax = nfss->acregmax / HZ; 2192 data->acregmax = nfss->acregmax / HZ;
2194 data->acdirmin = nfss->acdirmin / HZ; 2193 data->acdirmin = nfss->acdirmin / HZ;
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h
index 186ec4969313..1150ea41b626 100644
--- a/include/linux/nfs_fs_sb.h
+++ b/include/linux/nfs_fs_sb.h
@@ -151,6 +151,7 @@ struct nfs_server {
151 unsigned long mount_time; /* when this fs was mounted */ 151 unsigned long mount_time; /* when this fs was mounted */
152 struct super_block *super; /* VFS super block */ 152 struct super_block *super; /* VFS super block */
153 dev_t s_dev; /* superblock dev numbers */ 153 dev_t s_dev; /* superblock dev numbers */
154 struct nfs_auth_info auth_info; /* parsed auth flavors */
154 155
155#ifdef CONFIG_NFS_FSCACHE 156#ifdef CONFIG_NFS_FSCACHE
156 struct nfs_fscache_key *fscache_key; /* unique key for superblock */ 157 struct nfs_fscache_key *fscache_key; /* unique key for superblock */