Merge branch 'for-linus-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[deliverable/linux.git] / fs / f2fs / super.c
index 0ff862b08fb95c5ce80351fa0f37cb5c02955e67..74cc8520b8b1c2f2637ca8d47b5320d0f3a56879 100644 (file)
@@ -617,6 +617,8 @@ static void destroy_percpu_info(struct f2fs_sb_info *sbi)
 
        for (i = 0; i < NR_COUNT_TYPE; i++)
                percpu_counter_destroy(&sbi->nr_pages[i]);
+       percpu_counter_destroy(&sbi->alloc_valid_block_count);
+       percpu_counter_destroy(&sbi->total_valid_inode_count);
 }
 
 static void f2fs_put_super(struct super_block *sb)
@@ -1382,7 +1384,13 @@ static int init_percpu_info(struct f2fs_sb_info *sbi)
                if (err)
                        return err;
        }
-       return 0;
+
+       err = percpu_counter_init(&sbi->alloc_valid_block_count, 0, GFP_KERNEL);
+       if (err)
+               return err;
+
+       return percpu_counter_init(&sbi->total_valid_inode_count, 0,
+                                                               GFP_KERNEL);
 }
 
 /*
@@ -1595,13 +1603,13 @@ try_onemore:
 
        sbi->total_valid_node_count =
                                le32_to_cpu(sbi->ckpt->valid_node_count);
-       sbi->total_valid_inode_count =
-                               le32_to_cpu(sbi->ckpt->valid_inode_count);
+       percpu_counter_set(&sbi->total_valid_inode_count,
+                               le32_to_cpu(sbi->ckpt->valid_inode_count));
        sbi->user_block_count = le64_to_cpu(sbi->ckpt->user_block_count);
        sbi->total_valid_block_count =
                                le64_to_cpu(sbi->ckpt->valid_block_count);
        sbi->last_valid_block_count = sbi->total_valid_block_count;
-       sbi->alloc_valid_block_count = 0;
+
        for (i = 0; i < NR_INODE_TYPE; i++) {
                INIT_LIST_HEAD(&sbi->inode_list[i]);
                spin_lock_init(&sbi->inode_lock[i]);
@@ -1918,17 +1926,17 @@ static void __exit exit_f2fs_fs(void)
 {
        remove_proc_entry("fs/f2fs", NULL);
        f2fs_destroy_root_stats();
-       unregister_shrinker(&f2fs_shrinker_info);
        unregister_filesystem(&f2fs_fs_type);
+       unregister_shrinker(&f2fs_shrinker_info);
+#ifdef CONFIG_F2FS_FAULT_INJECTION
+       kobject_put(&f2fs_fault_inject);
+#endif
+       kset_unregister(f2fs_kset);
        destroy_extent_cache();
        destroy_checkpoint_caches();
        destroy_segment_manager_caches();
        destroy_node_manager_caches();
        destroy_inodecache();
-#ifdef CONFIG_F2FS_FAULT_INJECTION
-       kobject_put(&f2fs_fault_inject);
-#endif
-       kset_unregister(f2fs_kset);
        f2fs_destroy_trace_ios();
 }
 
This page took 0.025671 seconds and 5 git commands to generate.