From 96118c9d3d790768d5ecf87d9bd593d1c6bc3d36 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Fri, 21 Dec 2012 11:02:32 -0500 Subject: [PATCH] --- yaml --- r: 347917 b: refs/heads/master c: c4271c6e37c32105492cbbed35f45330cb327b94 h: refs/heads/master i: 347915: 8b00ee64ed60878536dbd0b1071cc35d8de98f63 v: v3 --- [refs] | 2 +- trunk/fs/nfs/super.c | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index d3ff2661c2a3..49d8c515f26c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c129c29347b6cf0d64bfe53848f68320286612ab +refs/heads/master: c4271c6e37c32105492cbbed35f45330cb327b94 diff --git a/trunk/fs/nfs/super.c b/trunk/fs/nfs/super.c index aa5315bb3666..c25cadf8f8c4 100644 --- a/trunk/fs/nfs/super.c +++ b/trunk/fs/nfs/super.c @@ -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); }