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: Yongqiang Yang <xiaoqiangnk@gmail.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
2e10e2f2e5
commit
c72df9f928
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue