Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 636d7e2e authored by Darrick J. Wong's avatar Darrick J. Wong Committed by Theodore Ts'o
Browse files

ext4: update s_free_{inodes,blocks}_count during online resize



When we're doing an online resize of an ext4 filesystem, we need to
update the free inode and block counts in the superblock so that fsck
doesn't complain.

Signed-off-by: default avatarDarrick J. Wong <djwong@us.ibm.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 92b97816
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -1163,8 +1163,11 @@ static void ext4_update_super(struct super_block *sb,
	do_div(reserved_blocks, 100);
	do_div(reserved_blocks, 100);


	ext4_blocks_count_set(es, ext4_blocks_count(es) + blocks_count);
	ext4_blocks_count_set(es, ext4_blocks_count(es) + blocks_count);
	ext4_free_blocks_count_set(es, ext4_free_blocks_count(es) + free_blocks);
	le32_add_cpu(&es->s_inodes_count, EXT4_INODES_PER_GROUP(sb) *
	le32_add_cpu(&es->s_inodes_count, EXT4_INODES_PER_GROUP(sb) *
		     flex_gd->count);
		     flex_gd->count);
	le32_add_cpu(&es->s_free_inodes_count, EXT4_INODES_PER_GROUP(sb) *
		     flex_gd->count);


	/*
	/*
	 * We need to protect s_groups_count against other CPUs seeing
	 * We need to protect s_groups_count against other CPUs seeing
@@ -1465,6 +1468,7 @@ static int ext4_group_extend_no_check(struct super_block *sb,
	}
	}


	ext4_blocks_count_set(es, o_blocks_count + add);
	ext4_blocks_count_set(es, o_blocks_count + add);
	ext4_free_blocks_count_set(es, ext4_free_blocks_count(es) + add);
	ext4_debug("freeing blocks %llu through %llu\n", o_blocks_count,
	ext4_debug("freeing blocks %llu through %llu\n", o_blocks_count,
		   o_blocks_count + add);
		   o_blocks_count + add);
	/* We add the blocks to the bitmap and set the group need init bit */
	/* We add the blocks to the bitmap and set the group need init bit */