ext4: fix the number of credits needed for ext4_ext_migrate()
authorTheodore Ts'o <tytso@mit.edu>
Sat, 9 Feb 2013 17:50:27 +0000 (12:50 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 9 Feb 2013 17:50:27 +0000 (12:50 -0500)
The migration ioctl creates a temporary inode.  Since this inode is
never linked to a directory, we don't need to reserve journal credits
required for modifying the directory.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
fs/ext4/migrate.c

index 4e4fcfd342f8130119e3d768e220190f813417b2..480acf4a085fa7be60982c8643e20675164ad8c4 100644 (file)
@@ -456,11 +456,14 @@ int ext4_ext_migrate(struct inode *inode)
                 */
                return retval;
 
+       /*
+        * Worst case we can touch the allocation bitmaps, a bgd
+        * block, and a block to link in the orphan list.  We do need
+        * need to worry about credits for modifying the quota inode.
+        */
        handle = ext4_journal_start(inode, EXT4_HT_MIGRATE,
-                                       EXT4_DATA_TRANS_BLOCKS(inode->i_sb) +
-                                       EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 +
-                                       EXT4_MAXQUOTAS_INIT_BLOCKS(inode->i_sb)
-                                       + 1);
+               4 + EXT4_MAXQUOTAS_TRANS_BLOCKS(inode->i_sb));
+
        if (IS_ERR(handle)) {
                retval = PTR_ERR(handle);
                return retval;