| From b390118afb3c4c38a2c42d8b905c7382bbd69bca Mon Sep 17 00:00:00 2001 |
| From: Theodore Ts'o <tytso@mit.edu> |
| Date: Sun, 15 Nov 2009 15:29:56 -0500 |
| Subject: [PATCH 68/85] ext4: fix block validity checks so they work correctly with meta_bg |
| |
| (cherry picked from commit 1032988c71f3f85483b2b4319684d1205a704c02) |
| |
| The block validity checks used by ext4_data_block_valid() wasn't |
| correctly written to check file systems with the meta_bg feature. Fix |
| this. |
| |
| Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/ext4/block_validity.c | 2 +- |
| fs/ext4/inode.c | 5 +---- |
| 2 files changed, 2 insertions(+), 5 deletions(-) |
| |
| --- a/fs/ext4/block_validity.c |
| +++ b/fs/ext4/block_validity.c |
| @@ -160,7 +160,7 @@ int ext4_setup_system_zone(struct super_ |
| if (ext4_bg_has_super(sb, i) && |
| ((i < 5) || ((i % flex_size) == 0))) |
| add_system_zone(sbi, ext4_group_first_block_no(sb, i), |
| - sbi->s_gdb_count + 1); |
| + ext4_bg_num_gdb(sb, i) + 1); |
| gdp = ext4_get_group_desc(sb, i, NULL); |
| ret = add_system_zone(sbi, ext4_block_bitmap(sb, gdp), 1); |
| if (ret) |
| --- a/fs/ext4/inode.c |
| +++ b/fs/ext4/inode.c |
| @@ -4873,10 +4873,7 @@ struct inode *ext4_iget(struct super_blo |
| |
| ret = 0; |
| if (ei->i_file_acl && |
| - ((ei->i_file_acl < |
| - (le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block) + |
| - EXT4_SB(sb)->s_gdb_count)) || |
| - (ei->i_file_acl >= ext4_blocks_count(EXT4_SB(sb)->s_es)))) { |
| + !ext4_data_block_valid(EXT4_SB(sb), ei->i_file_acl, 1)) { |
| ext4_error(sb, __func__, |
| "bad extended attribute block %llu in inode #%lu", |
| ei->i_file_acl, inode->i_ino); |