ext4: Do mballoc init before doing filesystem recovery
During filesystem recovery we may be doing a truncate which expects some of the mballoc data structures to be initialized. So do ext4_mb_init before recovery. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
688f05a019
commit
c2774d84fd
1 changed files with 15 additions and 15 deletions
|
@ -2456,6 +2456,21 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
"available.\n");
|
"available.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) {
|
||||||
|
printk(KERN_WARNING "EXT4-fs: Ignoring delalloc option - "
|
||||||
|
"requested data journaling mode\n");
|
||||||
|
clear_opt(sbi->s_mount_opt, DELALLOC);
|
||||||
|
} else if (test_opt(sb, DELALLOC))
|
||||||
|
printk(KERN_INFO "EXT4-fs: delayed allocation enabled\n");
|
||||||
|
|
||||||
|
ext4_ext_init(sb);
|
||||||
|
err = ext4_mb_init(sb, needs_recovery);
|
||||||
|
if (err) {
|
||||||
|
printk(KERN_ERR "EXT4-fs: failed to initalize mballoc (%d)\n",
|
||||||
|
err);
|
||||||
|
goto failed_mount4;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* akpm: core read_super() calls in here with the superblock locked.
|
* akpm: core read_super() calls in here with the superblock locked.
|
||||||
* That deadlocks, because orphan cleanup needs to lock the superblock
|
* That deadlocks, because orphan cleanup needs to lock the superblock
|
||||||
|
@ -2475,21 +2490,6 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA ? "ordered":
|
test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA ? "ordered":
|
||||||
"writeback");
|
"writeback");
|
||||||
|
|
||||||
if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) {
|
|
||||||
printk(KERN_WARNING "EXT4-fs: Ignoring delalloc option - "
|
|
||||||
"requested data journaling mode\n");
|
|
||||||
clear_opt(sbi->s_mount_opt, DELALLOC);
|
|
||||||
} else if (test_opt(sb, DELALLOC))
|
|
||||||
printk(KERN_INFO "EXT4-fs: delayed allocation enabled\n");
|
|
||||||
|
|
||||||
ext4_ext_init(sb);
|
|
||||||
err = ext4_mb_init(sb, needs_recovery);
|
|
||||||
if (err) {
|
|
||||||
printk(KERN_ERR "EXT4-fs: failed to initalize mballoc (%d)\n",
|
|
||||||
err);
|
|
||||||
goto failed_mount4;
|
|
||||||
}
|
|
||||||
|
|
||||||
lock_kernel();
|
lock_kernel();
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue