Commit 6ca792edc13c409e8d4eb9001e048264c6a2eb64

Authored by Maarten ter Huurne
Committed by Theodore Ts'o
1 parent 03b40e3496

ext4: fix corruption when online resizing a fs with 1K block size

Subtracting the number of the first data block places the superblock
backups one block too early, corrupting the file system. When the block
size is larger than 1K, the first data block is 0, so the subtraction
has no effect and no corruption occurs.

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
CC: stable@vger.kernel.org

Showing 1 changed file with 1 additions and 3 deletions Side-by-side Diff

... ... @@ -1660,12 +1660,10 @@
1660 1660 err = err2;
1661 1661  
1662 1662 if (!err) {
1663   - ext4_fsblk_t first_block;
1664   - first_block = ext4_group_first_block_no(sb, 0);
1665 1663 if (test_opt(sb, DEBUG))
1666 1664 printk(KERN_DEBUG "EXT4-fs: extended group to %llu "
1667 1665 "blocks\n", ext4_blocks_count(es));
1668   - update_backups(sb, EXT4_SB(sb)->s_sbh->b_blocknr - first_block,
  1666 + update_backups(sb, EXT4_SB(sb)->s_sbh->b_blocknr,
1669 1667 (char *)es, sizeof(struct ext4_super_block), 0);
1670 1668 }
1671 1669 return err;