diff options
-rw-r--r-- | fs/nfs/super.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index aa5315bb3666..c25cadf8f8c4 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -2375,19 +2375,30 @@ static void nfs_get_cache_cookie(struct super_block *sb, | |||
2375 | struct nfs_parsed_mount_data *parsed, | 2375 | struct nfs_parsed_mount_data *parsed, |
2376 | struct nfs_clone_mount *cloned) | 2376 | struct nfs_clone_mount *cloned) |
2377 | { | 2377 | { |
2378 | struct nfs_server *nfss = NFS_SB(sb); | ||
2378 | char *uniq = NULL; | 2379 | char *uniq = NULL; |
2379 | int ulen = 0; | 2380 | int ulen = 0; |
2380 | 2381 | ||
2381 | if (parsed && parsed->fscache_uniq) { | 2382 | nfss->fscache_key = NULL; |
2382 | uniq = parsed->fscache_uniq; | 2383 | nfss->fscache = NULL; |
2383 | ulen = strlen(parsed->fscache_uniq); | 2384 | |
2385 | if (parsed) { | ||
2386 | if (!(parsed->options & NFS_OPTION_FSCACHE)) | ||
2387 | return; | ||
2388 | if (parsed->fscache_uniq) { | ||
2389 | uniq = parsed->fscache_uniq; | ||
2390 | ulen = strlen(parsed->fscache_uniq); | ||
2391 | } | ||
2384 | } else if (cloned) { | 2392 | } else if (cloned) { |
2385 | struct nfs_server *mnt_s = NFS_SB(cloned->sb); | 2393 | struct nfs_server *mnt_s = NFS_SB(cloned->sb); |
2394 | if (!(mnt_s->options & NFS_OPTION_FSCACHE)) | ||
2395 | return; | ||
2386 | if (mnt_s->fscache_key) { | 2396 | if (mnt_s->fscache_key) { |
2387 | uniq = mnt_s->fscache_key->key.uniquifier; | 2397 | uniq = mnt_s->fscache_key->key.uniquifier; |
2388 | ulen = mnt_s->fscache_key->key.uniq_len; | 2398 | ulen = mnt_s->fscache_key->key.uniq_len; |
2389 | }; | 2399 | }; |
2390 | } | 2400 | } else |
2401 | return; | ||
2391 | 2402 | ||
2392 | nfs_fscache_get_super_cookie(sb, uniq, ulen); | 2403 | nfs_fscache_get_super_cookie(sb, uniq, ulen); |
2393 | } | 2404 | } |