Commit 2ebd1704 authored by Yongqiang Yang's avatar Yongqiang Yang Committed by Theodore Ts'o

ext4: avoid duplicate writes of the backup bg descriptor blocks

The resize code was needlessly writing the backup block group
descriptor blocks multiple times (once per block group) during an
online resize.
Signed-off-by: default avatarYongqiang Yang <xiaoqiangnk@gmail.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
Cc: stable@vger.kernel.org
parent 6df935ad
...@@ -1358,13 +1358,15 @@ static int ext4_flex_group_add(struct super_block *sb, ...@@ -1358,13 +1358,15 @@ static int ext4_flex_group_add(struct super_block *sb,
err = err2; err = err2;
if (!err) { if (!err) {
int i; int gdb_num = group / EXT4_DESC_PER_BLOCK(sb);
int gdb_num_end = ((group + flex_gd->count - 1) /
EXT4_DESC_PER_BLOCK(sb));
update_backups(sb, sbi->s_sbh->b_blocknr, (char *)es, update_backups(sb, sbi->s_sbh->b_blocknr, (char *)es,
sizeof(struct ext4_super_block)); sizeof(struct ext4_super_block));
for (i = 0; i < flex_gd->count; i++, group++) { for (; gdb_num <= gdb_num_end; gdb_num++) {
struct buffer_head *gdb_bh; struct buffer_head *gdb_bh;
int gdb_num;
gdb_num = group / EXT4_BLOCKS_PER_GROUP(sb);
gdb_bh = sbi->s_group_desc[gdb_num]; gdb_bh = sbi->s_group_desc[gdb_num];
update_backups(sb, gdb_bh->b_blocknr, gdb_bh->b_data, update_backups(sb, gdb_bh->b_blocknr, gdb_bh->b_data,
gdb_bh->b_size); gdb_bh->b_size);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment