OSDN Git Service

Merge tag 'v4.4.214' into 10
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / fs / ext2 / super.c
index 0d44f7e..f5cf7fa 100644 (file)
@@ -131,7 +131,10 @@ static void ext2_put_super (struct super_block * sb)
 
        dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
 
-       ext2_xattr_put_super(sb);
+       if (sbi->s_mb_cache) {
+               ext2_xattr_destroy_cache(sbi->s_mb_cache);
+               sbi->s_mb_cache = NULL;
+       }
        if (!(sb->s_flags & MS_RDONLY)) {
                struct ext2_super_block *es = sbi->s_es;
 
@@ -1115,6 +1118,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
                ext2_msg(sb, KERN_ERR, "error: insufficient memory");
                goto failed_mount3;
        }
+
+#ifdef CONFIG_EXT2_FS_XATTR
+       sbi->s_mb_cache = ext2_xattr_create_cache();
+       if (!sbi->s_mb_cache) {
+               ext2_msg(sb, KERN_ERR, "Failed to create an mb_cache");
+               goto failed_mount3;
+       }
+#endif
        /*
         * set up enough so that it can read an inode
         */
@@ -1160,6 +1171,8 @@ cantfind_ext2:
                        sb->s_id);
        goto failed_mount;
 failed_mount3:
+       if (sbi->s_mb_cache)
+               ext2_xattr_destroy_cache(sbi->s_mb_cache);
        percpu_counter_destroy(&sbi->s_freeblocks_counter);
        percpu_counter_destroy(&sbi->s_freeinodes_counter);
        percpu_counter_destroy(&sbi->s_dirs_counter);
@@ -1566,20 +1579,17 @@ MODULE_ALIAS_FS("ext2");
 
 static int __init init_ext2_fs(void)
 {
-       int err = init_ext2_xattr();
-       if (err)
-               return err;
+       int err;
+
        err = init_inodecache();
        if (err)
-               goto out1;
+               return err;
         err = register_filesystem(&ext2_fs_type);
        if (err)
                goto out;
        return 0;
 out:
        destroy_inodecache();
-out1:
-       exit_ext2_xattr();
        return err;
 }
 
@@ -1587,7 +1597,6 @@ static void __exit exit_ext2_fs(void)
 {
        unregister_filesystem(&ext2_fs_type);
        destroy_inodecache();
-       exit_ext2_xattr();
 }
 
 MODULE_AUTHOR("Remy Card and others");