OSDN Git Service

Merge tag 'write-page-prefaulting' of git://git.kernel.org/pub/scm/linux/kernel/git...
[uclinux-h8/linux.git] / fs / nfs / super.c
index 3aced40..6ab5eeb 100644 (file)
@@ -1204,42 +1204,42 @@ static int nfs_compare_super(struct super_block *sb, struct fs_context *fc)
 }
 
 #ifdef CONFIG_NFS_FSCACHE
-static void nfs_get_cache_cookie(struct super_block *sb,
-                                struct nfs_fs_context *ctx)
+static int nfs_get_cache_cookie(struct super_block *sb,
+                               struct nfs_fs_context *ctx)
 {
        struct nfs_server *nfss = NFS_SB(sb);
        char *uniq = NULL;
        int ulen = 0;
 
-       nfss->fscache_key = NULL;
        nfss->fscache = NULL;
 
        if (!ctx)
-               return;
+               return 0;
 
        if (ctx->clone_data.sb) {
                struct nfs_server *mnt_s = NFS_SB(ctx->clone_data.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;
+                       return 0;
+               if (mnt_s->fscache_uniq) {
+                       uniq = mnt_s->fscache_uniq;
+                       ulen = strlen(uniq);
                }
        } else {
                if (!(ctx->options & NFS_OPTION_FSCACHE))
-                       return;
+                       return 0;
                if (ctx->fscache_uniq) {
                        uniq = ctx->fscache_uniq;
                        ulen = strlen(ctx->fscache_uniq);
                }
        }
 
-       nfs_fscache_get_super_cookie(sb, uniq, ulen);
+       return nfs_fscache_get_super_cookie(sb, uniq, ulen);
 }
 #else
-static void nfs_get_cache_cookie(struct super_block *sb,
-                                struct nfs_fs_context *ctx)
+static int nfs_get_cache_cookie(struct super_block *sb,
+                               struct nfs_fs_context *ctx)
 {
+       return 0;
 }
 #endif
 
@@ -1299,7 +1299,9 @@ int nfs_get_tree_common(struct fs_context *fc)
                        s->s_blocksize_bits = bsize;
                        s->s_blocksize = 1U << bsize;
                }
-               nfs_get_cache_cookie(s, ctx);
+               error = nfs_get_cache_cookie(s, ctx);
+               if (error < 0)
+                       goto error_splat_super;
        }
 
        error = nfs_get_root(s, fc);