Patchwork [09/12] ext4: fix the number of credits needed for ext4_ext_migrate()

login
register
mail settings
Submitter Theodore Ts'o
Date Feb. 9, 2013, 9:53 p.m.
Message ID <1360446832-12724-10-git-send-email-tytso@mit.edu>
Download mbox | patch
Permalink /patch/219460/
State Accepted
Headers show

Comments

Theodore Ts'o - Feb. 9, 2013, 9:53 p.m.
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>
---
 fs/ext4/migrate.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
Jan Kara - Feb. 11, 2013, 4:26 p.m.
On Sat 09-02-13 16:53:49, Ted Tso wrote:
> 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.
  Looks good. You can add:
Reviewed-by: Jan Kara <jack@suse.cz>

								Honza

> 
> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
> ---
>  fs/ext4/migrate.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c
> index 4e4fcfd..480acf4 100644
> --- a/fs/ext4/migrate.c
> +++ b/fs/ext4/migrate.c
> @@ -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;
> -- 
> 1.7.12.rc0.22.gcdd159b
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c
index 4e4fcfd..480acf4 100644
--- a/fs/ext4/migrate.c
+++ b/fs/ext4/migrate.c
@@ -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;