diff options
| author | Theodore Ts'o <tytso@mit.edu> | 2011-09-09 18:58:51 -0400 | 
|---|---|---|
| committer | Theodore Ts'o <tytso@mit.edu> | 2011-09-09 18:58:51 -0400 | 
| commit | 24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5 (patch) | |
| tree | 7f83cc8e52b5f2edc5d89d2d1808d0972831f9bf /fs/ext4/ialloc.c | |
| parent | 5704265188ffe4290ed73b3cb685206c3ed8209d (diff) | |
| download | olio-linux-3.10-24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5.tar.xz olio-linux-3.10-24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5.zip  | |
ext4: convert the free_blocks field in s_flex_groups to be free_clusters
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>
Diffstat (limited to 'fs/ext4/ialloc.c')
| -rw-r--r-- | fs/ext4/ialloc.c | 40 | 
1 files changed, 21 insertions, 19 deletions
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 58115bad163..0be5862313f 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -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;  	}  |