ext4: convert the free_blocks field in s_flex_groups to be free_clusters
authorTheodore Ts'o <tytso@mit.edu>
Fri, 9 Sep 2011 22:58:51 +0000 (18:58 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 9 Sep 2011 22:58:51 +0000 (18:58 -0400)
Convert the free_blocks to be free_clusters to make the final revised
bigalloc changes easier to read/understand.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/ialloc.c
fs/ext4/mballoc.c
fs/ext4/resize.c
fs/ext4/super.c

index c7588366471c26121aaf8536211cfd68ea65ce73..d2584224c89aa96862e58210e45678d450495cc0 100644 (file)
@@ -300,7 +300,7 @@ struct ext4_group_desc
 
 struct flex_groups {
        atomic_t free_inodes;
-       atomic_t free_blocks;
+       atomic_t free_clusters;
        atomic_t used_dirs;
 };
 
index 58115bad163fe2f2693d26f5ac8be161591de7c8..0be5862313f025398e1c64672237d4c3524798e6 100644 (file)
@@ -346,7 +346,7 @@ static int find_group_flex(struct super_block *sb, struct inode *parent,
        int flex_size = ext4_flex_bg_size(sbi);
        ext4_group_t best_flex = parent_fbg_group;
        int blocks_per_flex = sbi->s_blocks_per_group * flex_size;
-       int flexbg_free_blocks;
+       int flexbg_free_clusters;
        int flex_freeb_ratio;
        ext4_group_t n_fbg_groups;
        ext4_group_t i;
@@ -355,8 +355,9 @@ static int find_group_flex(struct super_block *sb, struct inode *parent,
                sbi->s_log_groups_per_flex;
 
 find_close_to_parent:
-       flexbg_free_blocks = atomic_read(&flex_group[best_flex].free_blocks);
-       flex_freeb_ratio = flexbg_free_blocks * 100 / blocks_per_flex;
+       flexbg_free_clusters = atomic_read(&flex_group[best_flex].free_clusters);
+       flex_freeb_ratio = EXT4_C2B(sbi, flexbg_free_clusters) * 100 /
+               blocks_per_flex;
        if (atomic_read(&flex_group[best_flex].free_inodes) &&
            flex_freeb_ratio > free_block_ratio)
                goto found_flexbg;
@@ -370,8 +371,9 @@ find_close_to_parent:
                if (i == parent_fbg_group || i == parent_fbg_group - 1)
                        continue;
 
-               flexbg_free_blocks = atomic_read(&flex_group[i].free_blocks);
-               flex_freeb_ratio = flexbg_free_blocks * 100 / blocks_per_flex;
+               flexbg_free_clusters = atomic_read(&flex_group[i].free_clusters);
+               flex_freeb_ratio = EXT4_C2B(sbi, flexbg_free_clusters) * 100 /
+                       blocks_per_flex;
 
                if (flex_freeb_ratio > free_block_ratio &&
                    (atomic_read(&flex_group[i].free_inodes))) {
@@ -380,14 +382,14 @@ find_close_to_parent:
                }
 
                if ((atomic_read(&flex_group[best_flex].free_inodes) == 0) ||
-                   ((atomic_read(&flex_group[i].free_blocks) >
-                     atomic_read(&flex_group[best_flex].free_blocks)) &&
+                   ((atomic_read(&flex_group[i].free_clusters) >
+                     atomic_read(&flex_group[best_flex].free_clusters)) &&
                     atomic_read(&flex_group[i].free_inodes)))
                        best_flex = i;
        }
 
        if (!atomic_read(&flex_group[best_flex].free_inodes) ||
-           !atomic_read(&flex_group[best_flex].free_blocks))
+           !atomic_read(&flex_group[best_flex].free_clusters))
                return -1;
 
 found_flexbg:
@@ -407,7 +409,7 @@ out:
 
 struct orlov_stats {
        __u32 free_inodes;
-       __u32 free_blocks;
+       __u32 free_clusters;
        __u32 used_dirs;
 };
 
@@ -424,7 +426,7 @@ static void get_orlov_stats(struct super_block *sb, ext4_group_t g,
 
        if (flex_size > 1) {
                stats->free_inodes = atomic_read(&flex_group[g].free_inodes);
-               stats->free_blocks = atomic_read(&flex_group[g].free_blocks);
+               stats->free_clusters = atomic_read(&flex_group[g].free_clusters);
                stats->used_dirs = atomic_read(&flex_group[g].used_dirs);
                return;
        }
@@ -432,11 +434,11 @@ static void get_orlov_stats(struct super_block *sb, ext4_group_t g,
        desc = ext4_get_group_desc(sb, g, NULL);
        if (desc) {
                stats->free_inodes = ext4_free_inodes_count(sb, desc);
-               stats->free_blocks = ext4_free_blks_count(sb, desc);
+               stats->free_clusters = ext4_free_blks_count(sb, desc);
                stats->used_dirs = ext4_used_dirs_count(sb, desc);
        } else {
                stats->free_inodes = 0;
-               stats->free_blocks = 0;
+               stats->free_clusters = 0;
                stats->used_dirs = 0;
        }
 }
@@ -471,10 +473,10 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
        ext4_group_t real_ngroups = ext4_get_groups_count(sb);
        int inodes_per_group = EXT4_INODES_PER_GROUP(sb);
        unsigned int freei, avefreei;
-       ext4_fsblk_t freeb, avefreeb;
+       ext4_fsblk_t freeb, avefreec;
        unsigned int ndirs;
        int max_dirs, min_inodes;
-       ext4_grpblk_t min_blocks;
+       ext4_grpblk_t min_clusters;
        ext4_group_t i, grp, g, ngroups;
        struct ext4_group_desc *desc;
        struct orlov_stats stats;
@@ -492,8 +494,8 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
        avefreei = freei / ngroups;
        freeb = EXT4_C2B(sbi,
                percpu_counter_read_positive(&sbi->s_freeclusters_counter));
-       avefreeb = freeb;
-       do_div(avefreeb, ngroups);
+       avefreec = freeb;
+       do_div(avefreec, ngroups);
        ndirs = percpu_counter_read_positive(&sbi->s_dirs_counter);
 
        if (S_ISDIR(mode) &&
@@ -519,7 +521,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
                                continue;
                        if (stats.free_inodes < avefreei)
                                continue;
-                       if (stats.free_blocks < avefreeb)
+                       if (stats.free_clusters < avefreec)
                                continue;
                        grp = g;
                        ret = 0;
@@ -557,7 +559,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
        min_inodes = avefreei - inodes_per_group*flex_size / 4;
        if (min_inodes < 1)
                min_inodes = 1;
-       min_blocks = avefreeb - EXT4_BLOCKS_PER_GROUP(sb)*flex_size / 4;
+       min_clusters = avefreec - EXT4_CLUSTERS_PER_GROUP(sb)*flex_size / 4;
 
        /*
         * Start looking in the flex group where we last allocated an
@@ -576,7 +578,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
                        continue;
                if (stats.free_inodes < min_inodes)
                        continue;
-               if (stats.free_blocks < min_blocks)
+               if (stats.free_clusters < min_clusters)
                        continue;
                goto found_flex_bg;
        }
index 4a38b65bd5644b0b33dbcbc2f67e67881aa7179c..f8e37cf2c2dd117c6b2e6419b20fb2965b35fedf 100644 (file)
@@ -2847,7 +2847,7 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac,
                ext4_group_t flex_group = ext4_flex_group(sbi,
                                                          ac->ac_b_ex.fe_group);
                atomic_sub(ac->ac_b_ex.fe_len,
-                          &sbi->s_flex_groups[flex_group].free_blocks);
+                          &sbi->s_flex_groups[flex_group].free_clusters);
        }
 
        err = ext4_handle_dirty_metadata(handle, NULL, bitmap_bh);
@@ -4696,7 +4696,8 @@ do_more:
 
        if (sbi->s_log_groups_per_flex) {
                ext4_group_t flex_group = ext4_flex_group(sbi, block_group);
-               atomic_add(count, &sbi->s_flex_groups[flex_group].free_blocks);
+               atomic_add(count_clusters,
+                          &sbi->s_flex_groups[flex_group].free_clusters);
        }
 
        ext4_mb_unload_buddy(&e4b);
@@ -4839,8 +4840,8 @@ int ext4_group_add_blocks(handle_t *handle, struct super_block *sb,
 
        if (sbi->s_log_groups_per_flex) {
                ext4_group_t flex_group = ext4_flex_group(sbi, block_group);
-               atomic_add(blocks_freed,
-                          &sbi->s_flex_groups[flex_group].free_blocks);
+               atomic_add(EXT4_B2C(sbi, blocks_freed),
+                          &sbi->s_flex_groups[flex_group].free_clusters);
        }
 
        ext4_mb_unload_buddy(&e4b);
index a324a537f2dca6600c9d23e921a38bb3d9d94c57..95a09ddca3b99e94f22ab080afcaed16191e1856 100644 (file)
@@ -946,8 +946,8 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
            sbi->s_log_groups_per_flex) {
                ext4_group_t flex_group;
                flex_group = ext4_flex_group(sbi, input->group);
-               atomic_add(input->free_blocks_count,
-                          &sbi->s_flex_groups[flex_group].free_blocks);
+               atomic_add(EXT4_B2C(sbi, input->free_blocks_count),
+                          &sbi->s_flex_groups[flex_group].free_clusters);
                atomic_add(EXT4_INODES_PER_GROUP(sb),
                           &sbi->s_flex_groups[flex_group].free_inodes);
        }
index f81e7e791655fda3bf5da8bab1110b3d20bb050f..d7e0e045b11b030d073768a91702bc787ed47fec 100644 (file)
@@ -2035,7 +2035,7 @@ static int ext4_fill_flex_info(struct super_block *sb)
                atomic_add(ext4_free_inodes_count(sb, gdp),
                           &sbi->s_flex_groups[flex_group].free_inodes);
                atomic_add(ext4_free_blks_count(sb, gdp),
-                          &sbi->s_flex_groups[flex_group].free_blocks);
+                          &sbi->s_flex_groups[flex_group].free_clusters);
                atomic_add(ext4_used_dirs_count(sb, gdp),
                           &sbi->s_flex_groups[flex_group].used_dirs);
        }