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

Commit c72df9f9 authored by Yongqiang Yang's avatar Yongqiang Yang Committed by Theodore Ts'o
Browse files

ext4: pass verify_reserved_gdb() the number of group decriptors



The 64bit resizer adds a flex group each time, so verify_reserved_gdb
can not use s_groups_count directly, it should use the number of group
decriptors before the added group.

Signed-off-by: default avatarYongqiang Yang <xiaoqiangnk@gmail.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 2e10e2f2
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -656,10 +656,10 @@ static unsigned ext4_list_backups(struct super_block *sb, unsigned *three,
 * groups in current filesystem that have BACKUPS, or -ve error code.
 * groups in current filesystem that have BACKUPS, or -ve error code.
 */
 */
static int verify_reserved_gdb(struct super_block *sb,
static int verify_reserved_gdb(struct super_block *sb,
			       ext4_group_t end,
			       struct buffer_head *primary)
			       struct buffer_head *primary)
{
{
	const ext4_fsblk_t blk = primary->b_blocknr;
	const ext4_fsblk_t blk = primary->b_blocknr;
	const ext4_group_t end = EXT4_SB(sb)->s_groups_count;
	unsigned three = 1;
	unsigned three = 1;
	unsigned five = 5;
	unsigned five = 5;
	unsigned seven = 7;
	unsigned seven = 7;
@@ -734,7 +734,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
	if (!gdb_bh)
	if (!gdb_bh)
		return -EIO;
		return -EIO;


	gdbackups = verify_reserved_gdb(sb, gdb_bh);
	gdbackups = verify_reserved_gdb(sb, group, gdb_bh);
	if (gdbackups < 0) {
	if (gdbackups < 0) {
		err = gdbackups;
		err = gdbackups;
		goto exit_bh;
		goto exit_bh;
@@ -897,7 +897,8 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode,
			err = -EIO;
			err = -EIO;
			goto exit_bh;
			goto exit_bh;
		}
		}
		if ((gdbackups = verify_reserved_gdb(sb, primary[res])) < 0) {
		gdbackups = verify_reserved_gdb(sb, group, primary[res]);
		if (gdbackups < 0) {
			brelse(primary[res]);
			brelse(primary[res]);
			err = gdbackups;
			err = gdbackups;
			goto exit_bh;
			goto exit_bh;