diff options
Diffstat (limited to 'fs/ext4/resize.c')
| -rw-r--r-- | fs/ext4/resize.c | 34 | 
1 files changed, 14 insertions, 20 deletions
| diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index cf0c472047e3..ad62d7acc315 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -490,7 +490,7 @@ static int setup_new_flex_group_blocks(struct super_block *sb,  	       group_data[0].group != sbi->s_groups_count);  	reserved_gdb = le16_to_cpu(es->s_reserved_gdt_blocks); -	meta_bg = EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_META_BG); +	meta_bg = ext4_has_feature_meta_bg(sb);  	/* This transaction may be extended/restarted along the way */  	handle = ext4_journal_start_sb(sb, EXT4_HT_RESIZE, EXT4_MAX_TRANS_DATA); @@ -680,8 +680,7 @@ static unsigned ext4_list_backups(struct super_block *sb, unsigned *three,  	int mult = 3;  	unsigned ret; -	if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, -					EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER)) { +	if (!ext4_has_feature_sparse_super(sb)) {  		ret = *min;  		*min += 1;  		return ret; @@ -1040,7 +1039,7 @@ exit_free:   * do not copy the full number of backups at this time.  The resize   * which changed s_groups_count will backup again.   */ -static void update_backups(struct super_block *sb, int blk_off, char *data, +static void update_backups(struct super_block *sb, sector_t blk_off, char *data,  			   int size, int meta_bg)  {  	struct ext4_sb_info *sbi = EXT4_SB(sb); @@ -1065,7 +1064,7 @@ static void update_backups(struct super_block *sb, int blk_off, char *data,  		group = ext4_list_backups(sb, &three, &five, &seven);  		last = sbi->s_groups_count;  	} else { -		group = ext4_meta_bg_first_group(sb, group) + 1; +		group = ext4_get_group_number(sb, blk_off) + 1;  		last = (ext4_group_t)(group + EXT4_DESC_PER_BLOCK(sb) - 2);  	} @@ -1158,7 +1157,7 @@ static int ext4_add_new_descs(handle_t *handle, struct super_block *sb,  	int i, gdb_off, gdb_num, err = 0;  	int meta_bg; -	meta_bg = EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_META_BG); +	meta_bg = ext4_has_feature_meta_bg(sb);  	for (i = 0; i < count; i++, group++) {  		int reserved_gdb = ext4_bg_has_super(sb, group) ?  			le16_to_cpu(es->s_reserved_gdt_blocks) : 0; @@ -1381,9 +1380,7 @@ static void ext4_update_super(struct super_block *sb,  	ext4_debug("free blocks count %llu",  		   percpu_counter_read(&sbi->s_freeclusters_counter)); -	if (EXT4_HAS_INCOMPAT_FEATURE(sb, -				      EXT4_FEATURE_INCOMPAT_FLEX_BG) && -	    sbi->s_log_groups_per_flex) { +	if (ext4_has_feature_flex_bg(sb) && sbi->s_log_groups_per_flex) {  		ext4_group_t flex_group;  		flex_group = ext4_flex_group(sbi, group_data[0].group);  		atomic64_add(EXT4_NUM_B2C(sbi, free_blocks), @@ -1476,8 +1473,7 @@ exit_journal:  		int gdb_num = group / EXT4_DESC_PER_BLOCK(sb);  		int gdb_num_end = ((group + flex_gd->count - 1) /  				   EXT4_DESC_PER_BLOCK(sb)); -		int meta_bg = EXT4_HAS_INCOMPAT_FEATURE(sb, -				EXT4_FEATURE_INCOMPAT_META_BG); +		int meta_bg = ext4_has_feature_meta_bg(sb);  		sector_t old_gdb = 0;  		update_backups(sb, sbi->s_sbh->b_blocknr, (char *)es, @@ -1585,8 +1581,7 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)  	gdb_off = input->group % EXT4_DESC_PER_BLOCK(sb); -	if (gdb_off == 0 && !EXT4_HAS_RO_COMPAT_FEATURE(sb, -					EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER)) { +	if (gdb_off == 0 && !ext4_has_feature_sparse_super(sb)) {  		ext4_warning(sb, "Can't resize non-sparse filesystem further");  		return -EPERM;  	} @@ -1604,9 +1599,8 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)  	}  	if (reserved_gdb || gdb_off == 0) { -		if (!EXT4_HAS_COMPAT_FEATURE(sb, -					     EXT4_FEATURE_COMPAT_RESIZE_INODE) -		    || !le16_to_cpu(es->s_reserved_gdt_blocks)) { +		if (ext4_has_feature_resize_inode(sb) || +		    !le16_to_cpu(es->s_reserved_gdt_blocks)) {  			ext4_warning(sb,  				     "No reserved GDT blocks, can't resize");  			return -EPERM; @@ -1825,8 +1819,8 @@ static int ext4_convert_meta_bg(struct super_block *sb, struct inode *inode)  	if (err)  		goto errout; -	EXT4_CLEAR_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_RESIZE_INODE); -	EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_META_BG); +	ext4_clear_feature_resize_inode(sb); +	ext4_set_feature_meta_bg(sb);  	sbi->s_es->s_first_meta_bg =  		cpu_to_le32(num_desc_blocks(sb, sbi->s_groups_count)); @@ -1918,9 +1912,9 @@ retry:  	n_desc_blocks = num_desc_blocks(sb, n_group + 1);  	o_desc_blocks = num_desc_blocks(sb, sbi->s_groups_count); -	meta_bg = EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_META_BG); +	meta_bg = ext4_has_feature_meta_bg(sb); -	if (EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_RESIZE_INODE)) { +	if (ext4_has_feature_resize_inode(sb)) {  		if (meta_bg) {  			ext4_error(sb, "resize_inode and meta_bg enabled "  				   "simultaneously"); |