|
@@ -2375,19 +2375,30 @@ static void nfs_get_cache_cookie(struct super_block *sb,
|
|
|
struct nfs_parsed_mount_data *parsed,
|
|
|
struct nfs_clone_mount *cloned)
|
|
|
{
|
|
|
+ struct nfs_server *nfss = NFS_SB(sb);
|
|
|
char *uniq = NULL;
|
|
|
int ulen = 0;
|
|
|
|
|
|
- if (parsed && parsed->fscache_uniq) {
|
|
|
- uniq = parsed->fscache_uniq;
|
|
|
- ulen = strlen(parsed->fscache_uniq);
|
|
|
+ nfss->fscache_key = NULL;
|
|
|
+ nfss->fscache = NULL;
|
|
|
+
|
|
|
+ if (parsed) {
|
|
|
+ if (!(parsed->options & NFS_OPTION_FSCACHE))
|
|
|
+ return;
|
|
|
+ if (parsed->fscache_uniq) {
|
|
|
+ uniq = parsed->fscache_uniq;
|
|
|
+ ulen = strlen(parsed->fscache_uniq);
|
|
|
+ }
|
|
|
} else if (cloned) {
|
|
|
struct nfs_server *mnt_s = NFS_SB(cloned->sb);
|
|
|
+ if (!(mnt_s->options & NFS_OPTION_FSCACHE))
|
|
|
+ return;
|
|
|
if (mnt_s->fscache_key) {
|
|
|
uniq = mnt_s->fscache_key->key.uniquifier;
|
|
|
ulen = mnt_s->fscache_key->key.uniq_len;
|
|
|
};
|
|
|
- }
|
|
|
+ } else
|
|
|
+ return;
|
|
|
|
|
|
nfs_fscache_get_super_cookie(sb, uniq, ulen);
|
|
|
}
|