]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/ext4/ioctl.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[karo-tx-linux.git] / fs / ext4 / ioctl.c
index c2f8e060f636db1ebce648add747fe1e5cb777e4..721f4d33e148adf63872544dd8e4cedbbbb249f7 100644 (file)
@@ -104,7 +104,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
                } else if (oldflags & EXT4_EOFBLOCKS_FL)
                        ext4_truncate(inode);
 
-               handle = ext4_journal_start(inode, 1);
+               handle = ext4_journal_start(inode, EXT4_HT_INODE, 1);
                if (IS_ERR(handle)) {
                        err = PTR_ERR(handle);
                        goto flags_out;
@@ -173,7 +173,7 @@ flags_out:
                }
 
                mutex_lock(&inode->i_mutex);
-               handle = ext4_journal_start(inode, 1);
+               handle = ext4_journal_start(inode, EXT4_HT_INODE, 1);
                if (IS_ERR(handle)) {
                        err = PTR_ERR(handle);
                        goto unlock_out;
@@ -313,6 +313,9 @@ mext_out:
                if (err == 0)
                        err = err2;
                mnt_drop_write_file(filp);
+               if (!err && ext4_has_group_desc_csum(sb) &&
+                   test_opt(sb, INIT_INODE_TABLE))
+                       err = ext4_register_li_request(sb, input.group);
 group_add_out:
                ext4_resize_end(sb);
                return err;
@@ -358,6 +361,7 @@ group_add_out:
                ext4_fsblk_t n_blocks_count;
                struct super_block *sb = inode->i_sb;
                int err = 0, err2 = 0;
+               ext4_group_t o_group = EXT4_SB(sb)->s_groups_count;
 
                if (EXT4_HAS_RO_COMPAT_FEATURE(sb,
                               EXT4_FEATURE_RO_COMPAT_BIGALLOC)) {
@@ -388,6 +392,11 @@ group_add_out:
                if (err == 0)
                        err = err2;
                mnt_drop_write_file(filp);
+               if (!err && (o_group > EXT4_SB(sb)->s_groups_count) &&
+                   ext4_has_group_desc_csum(sb) &&
+                   test_opt(sb, INIT_INODE_TABLE))
+                       err = ext4_register_li_request(sb, o_group);
+
 resizefs_out:
                ext4_resize_end(sb);
                return err;