f2fs: use percpu_counter for total_valid_inode_count
[deliverable/linux.git] / fs / f2fs / f2fs.h
index c8833c802ea91571c38023490d66182ca84fbe1a..02f0656cb2ab1fd4668f82dadda1f00b674f1a01 100644 (file)
@@ -801,7 +801,6 @@ struct f2fs_sb_info {
        unsigned int total_sections;            /* total section count */
        unsigned int total_node_count;          /* total node block count */
        unsigned int total_valid_node_count;    /* valid node block count */
-       unsigned int total_valid_inode_count;   /* valid inode count */
        loff_t max_file_blocks;                 /* max block index of file */
        int active_logs;                        /* # of active logs */
        int dir_level;                          /* directory level */
@@ -818,6 +817,9 @@ struct f2fs_sb_info {
        /* # of allocated blocks */
        struct percpu_counter alloc_valid_block_count;
 
+       /* valid inode count */
+       struct percpu_counter total_valid_inode_count;
+
        struct f2fs_mount_info mount_opt;       /* mount options */
 
        /* for cleaning operations */
@@ -1325,23 +1327,17 @@ static inline unsigned int valid_node_count(struct f2fs_sb_info *sbi)
 
 static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi)
 {
-       spin_lock(&sbi->stat_lock);
-       f2fs_bug_on(sbi, sbi->total_valid_inode_count == sbi->total_node_count);
-       sbi->total_valid_inode_count++;
-       spin_unlock(&sbi->stat_lock);
+       percpu_counter_inc(&sbi->total_valid_inode_count);
 }
 
 static inline void dec_valid_inode_count(struct f2fs_sb_info *sbi)
 {
-       spin_lock(&sbi->stat_lock);
-       f2fs_bug_on(sbi, !sbi->total_valid_inode_count);
-       sbi->total_valid_inode_count--;
-       spin_unlock(&sbi->stat_lock);
+       percpu_counter_dec(&sbi->total_valid_inode_count);
 }
 
-static inline unsigned int valid_inode_count(struct f2fs_sb_info *sbi)
+static inline s64 valid_inode_count(struct f2fs_sb_info *sbi)
 {
-       return sbi->total_valid_inode_count;
+       return percpu_counter_sum_positive(&sbi->total_valid_inode_count);
 }
 
 static inline struct page *f2fs_grab_cache_page(struct address_space *mapping,
This page took 0.02489 seconds and 5 git commands to generate.