aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2008-04-29 22:00:36 -0400
committerTheodore Ts'o <tytso@mit.edu>2008-04-29 22:00:36 -0400
commit8753e88f1b4345677620ec68f847222a6301e2fd (patch)
treecd24e97014f89d9bbd0ea88b65ed59ea9d2e152e
parentef7377289a1510d638004158e43878643bc75dc5 (diff)
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>
-rw-r--r--fs/ext4/ialloc.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index d59bdf7233b5..c6efbab0c801 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -739,11 +739,6 @@ got:
739 if (err) 739 if (err)
740 goto fail_free_drop; 740 goto fail_free_drop;
741 741
742 err = ext4_mark_inode_dirty(handle, inode);
743 if (err) {
744 ext4_std_error(sb, err);
745 goto fail_free_drop;
746 }
747 if (test_opt(sb, EXTENTS)) { 742 if (test_opt(sb, EXTENTS)) {
748 /* set extent flag only for diretory, file and normal symlink*/ 743 /* set extent flag only for diretory, file and normal symlink*/
749 if (S_ISDIR(mode) || S_ISREG(mode) || S_ISLNK(mode)) { 744 if (S_ISDIR(mode) || S_ISREG(mode) || S_ISLNK(mode)) {
@@ -752,10 +747,16 @@ got:
752 err = ext4_update_incompat_feature(handle, sb, 747 err = ext4_update_incompat_feature(handle, sb,
753 EXT4_FEATURE_INCOMPAT_EXTENTS); 748 EXT4_FEATURE_INCOMPAT_EXTENTS);
754 if (err) 749 if (err)
755 goto fail; 750 goto fail_free_drop;
756 } 751 }
757 } 752 }
758 753
754 err = ext4_mark_inode_dirty(handle, inode);
755 if (err) {
756 ext4_std_error(sb, err);
757 goto fail_free_drop;
758 }
759
759 ext4_debug("allocating inode %lu\n", inode->i_ino); 760 ext4_debug("allocating inode %lu\n", inode->i_ino);
760 goto really_out; 761 goto really_out;
761fail: 762fail: