Commit 2311b9439ce8c525f3f8f821fc2ca9a541f673a5

Authored by Bryan Schumaker
Committed by Trond Myklebust
1 parent bae36241be

NFS: Don't pass mount data to nfs_fscache_get_super_cookie()

I intend on creating a single nfs_fs_mount() function used by all our
mount paths.  To avoid checking between new mounts and clone mounts, I
instead pass both structures to a new function in super.c that finds the
cache key and then looks up the super cookie.

Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

Showing 3 changed files with 29 additions and 21 deletions Side-by-side Diff

... ... @@ -64,23 +64,12 @@
64 64 * either by the 'fsc=xxx' option to mount, or by inheriting it from the parent
65 65 * superblock across an automount point of some nature.
66 66 */
67   -void nfs_fscache_get_super_cookie(struct super_block *sb, const char *uniq,
68   - struct nfs_clone_mount *mntdata)
  67 +void nfs_fscache_get_super_cookie(struct super_block *sb, const char *uniq, int ulen)
69 68 {
70 69 struct nfs_fscache_key *key, *xkey;
71 70 struct nfs_server *nfss = NFS_SB(sb);
72 71 struct rb_node **p, *parent;
73   - int diff, ulen;
74   -
75   - if (uniq) {
76   - ulen = strlen(uniq);
77   - } else if (mntdata) {
78   - struct nfs_server *mnt_s = NFS_SB(mntdata->sb);
79   - if (mnt_s->fscache_key) {
80   - uniq = mnt_s->fscache_key->key.uniquifier;
81   - ulen = mnt_s->fscache_key->key.uniq_len;
82   - }
83   - }
  72 + int diff;
84 73  
85 74 if (!uniq) {
86 75 uniq = "";
... ... @@ -73,9 +73,7 @@
73 73 extern void nfs_fscache_get_client_cookie(struct nfs_client *);
74 74 extern void nfs_fscache_release_client_cookie(struct nfs_client *);
75 75  
76   -extern void nfs_fscache_get_super_cookie(struct super_block *,
77   - const char *,
78   - struct nfs_clone_mount *);
  76 +extern void nfs_fscache_get_super_cookie(struct super_block *, const char *, int);
79 77 extern void nfs_fscache_release_super_cookie(struct super_block *);
80 78  
81 79 extern void nfs_fscache_init_inode_cookie(struct inode *);
... ... @@ -2278,6 +2278,27 @@
2278 2278 return nfs_compare_mount_options(sb, server, mntflags);
2279 2279 }
2280 2280  
  2281 +static void nfs_get_cache_cookie(struct super_block *sb,
  2282 + struct nfs_parsed_mount_data *parsed,
  2283 + struct nfs_clone_mount *cloned)
  2284 +{
  2285 + char *uniq = NULL;
  2286 + int ulen = 0;
  2287 +
  2288 + if (parsed && parsed->fscache_uniq) {
  2289 + uniq = parsed->fscache_uniq;
  2290 + ulen = strlen(parsed->fscache_uniq);
  2291 + } else if (cloned) {
  2292 + struct nfs_server *mnt_s = NFS_SB(cloned->sb);
  2293 + if (mnt_s->fscache_key) {
  2294 + uniq = mnt_s->fscache_key->key.uniquifier;
  2295 + ulen = mnt_s->fscache_key->key.uniq_len;
  2296 + };
  2297 + }
  2298 +
  2299 + nfs_fscache_get_super_cookie(sb, uniq, ulen);
  2300 +}
  2301 +
2281 2302 static int nfs_bdi_register(struct nfs_server *server)
2282 2303 {
2283 2304 return bdi_register_dev(&server->backing_dev_info, server->s_dev);
... ... @@ -2352,7 +2373,7 @@
2352 2373 if (!s->s_root) {
2353 2374 /* initial superblock/root creation */
2354 2375 nfs_fill_super(s, data);
2355   - nfs_fscache_get_super_cookie(s, data->fscache_uniq, NULL);
  2376 + nfs_get_cache_cookie(s, data, NULL);
2356 2377 }
2357 2378  
2358 2379 mntroot = nfs_get_root(s, mntfh, dev_name);
... ... @@ -2461,7 +2482,7 @@
2461 2482 if (!s->s_root) {
2462 2483 /* initial superblock/root creation */
2463 2484 nfs_clone_super(s, data->sb);
2464   - nfs_fscache_get_super_cookie(s, NULL, data);
  2485 + nfs_get_cache_cookie(s, NULL, data);
2465 2486 }
2466 2487  
2467 2488 mntroot = nfs_get_root(s, data->fh, dev_name);
... ... @@ -2724,7 +2745,7 @@
2724 2745 if (!s->s_root) {
2725 2746 /* initial superblock/root creation */
2726 2747 nfs4_fill_super(s);
2727   - nfs_fscache_get_super_cookie(s, data->fscache_uniq, NULL);
  2748 + nfs_get_cache_cookie(s, data, NULL);
2728 2749 }
2729 2750  
2730 2751 mntroot = nfs_get_root(s, mntfh, dev_name);
... ... @@ -2988,7 +3009,7 @@
2988 3009 if (!s->s_root) {
2989 3010 /* initial superblock/root creation */
2990 3011 nfs4_clone_super(s, data->sb);
2991   - nfs_fscache_get_super_cookie(s, NULL, data);
  3012 + nfs_get_cache_cookie(s, NULL, data);
2992 3013 }
2993 3014  
2994 3015 mntroot = nfs_get_root(s, data->fh, dev_name);
... ... @@ -3079,7 +3100,7 @@
3079 3100 if (!s->s_root) {
3080 3101 /* initial superblock/root creation */
3081 3102 nfs4_fill_super(s);
3082   - nfs_fscache_get_super_cookie(s, NULL, data);
  3103 + nfs_get_cache_cookie(s, NULL, data);
3083 3104 }
3084 3105  
3085 3106 mntroot = nfs_get_root(s, mntfh, dev_name);