ext4: mark inode dirty after initializing the extent tree
We should mark the inode dirty only after initializing the extent tree. Also if we fail during extent initialization we need to call DQUOT_FREE_INODE. 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
ef7377289a
commit
8753e88f1b
1 changed files with 7 additions and 6 deletions
|
@ -739,11 +739,6 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
|
|||
if (err)
|
||||
goto fail_free_drop;
|
||||
|
||||
err = ext4_mark_inode_dirty(handle, inode);
|
||||
if (err) {
|
||||
ext4_std_error(sb, err);
|
||||
goto fail_free_drop;
|
||||
}
|
||||
if (test_opt(sb, EXTENTS)) {
|
||||
/* set extent flag only for diretory, file and normal symlink*/
|
||||
if (S_ISDIR(mode) || S_ISREG(mode) || S_ISLNK(mode)) {
|
||||
|
@ -752,10 +747,16 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
|
|||
err = ext4_update_incompat_feature(handle, sb,
|
||||
EXT4_FEATURE_INCOMPAT_EXTENTS);
|
||||
if (err)
|
||||
goto fail;
|
||||
goto fail_free_drop;
|
||||
}
|
||||
}
|
||||
|
||||
err = ext4_mark_inode_dirty(handle, inode);
|
||||
if (err) {
|
||||
ext4_std_error(sb, err);
|
||||
goto fail_free_drop;
|
||||
}
|
||||
|
||||
ext4_debug("allocating inode %lu\n", inode->i_ino);
|
||||
goto really_out;
|
||||
fail:
|
||||
|
|
Loading…
Reference in a new issue