diff options
Diffstat (limited to 'fs/ext4/ialloc.c')
-rw-r--r-- | fs/ext4/ialloc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 34d39ae966f7..e17a6c918d72 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c | |||
@@ -615,6 +615,17 @@ got: | |||
615 | ext4_std_error(sb, err); | 615 | ext4_std_error(sb, err); |
616 | goto fail_free_drop; | 616 | goto fail_free_drop; |
617 | } | 617 | } |
618 | if (test_opt(sb, EXTENTS)) { | ||
619 | EXT4_I(inode)->i_flags |= EXT4_EXTENTS_FL; | ||
620 | ext4_ext_tree_init(handle, inode); | ||
621 | if (!EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS)) { | ||
622 | err = ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh); | ||
623 | if (err) goto fail; | ||
624 | EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS); | ||
625 | BUFFER_TRACE(EXT4_SB(sb)->s_sbh, "call ext4_journal_dirty_metadata"); | ||
626 | err = ext4_journal_dirty_metadata(handle, EXT4_SB(sb)->s_sbh); | ||
627 | } | ||
628 | } | ||
618 | 629 | ||
619 | ext4_debug("allocating inode %lu\n", inode->i_ino); | 630 | ext4_debug("allocating inode %lu\n", inode->i_ino); |
620 | goto really_out; | 631 | goto really_out; |