summaryrefslogtreecommitdiffstats
path: root/fs/ext4/resize.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2013-01-13 08:41:45 -0500
committerTheodore Ts'o <tytso@mit.edu>2013-01-13 08:41:45 -0500
commit7f5118629f74b82bd4ba5e47415d1b4dcb940241 (patch)
tree274a76ed1ddd6c19de793c762d04f6f1b6fc4da0 /fs/ext4/resize.c
parent15b49132fc972c63894592f218ea5a9a61b1a18f (diff)
downloadlinux-7f5118629f74b82bd4ba5e47415d1b4dcb940241.tar.gz
linux-7f5118629f74b82bd4ba5e47415d1b4dcb940241.tar.bz2
linux-7f5118629f74b82bd4ba5e47415d1b4dcb940241.zip
ext4: trigger the lazy inode table initialization after resize
After we have finished extending the file system, we need to trigger a the lazy inode table thread to zero out the inode tables. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/resize.c')
-rw-r--r--fs/ext4/resize.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 05f8d4502d42..8eefb636beb8 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -1506,10 +1506,12 @@ static int ext4_setup_next_flex_gd(struct super_block *sb,
group_data[i].blocks_count = blocks_per_group;
overhead = ext4_group_overhead_blocks(sb, group + i);
group_data[i].free_blocks_count = blocks_per_group - overhead;
- if (ext4_has_group_desc_csum(sb))
+ if (ext4_has_group_desc_csum(sb)) {
flex_gd->bg_flags[i] = EXT4_BG_BLOCK_UNINIT |
EXT4_BG_INODE_UNINIT;
- else
+ if (!test_opt(sb, INIT_INODE_TABLE))
+ flex_gd->bg_flags[i] |= EXT4_BG_INODE_ZEROED;
+ } else
flex_gd->bg_flags[i] = EXT4_BG_INODE_ZEROED;
}
@@ -1594,7 +1596,7 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
err = ext4_alloc_flex_bg_array(sb, input->group + 1);
if (err)
- return err;
+ goto out;
err = ext4_mb_alloc_groupinfo(sb, input->group + 1);
if (err)