Patchwork [1/2] ext3: Don't call dquot_free_block() if we don't update anything

login
register
mail settings
Submitter Kazuya Mio
Date Jan. 30, 2012, 8:41 a.m.
Message ID <4F2657B5.9050100@sx.jp.nec.com>
Download mbox | patch
Permalink /patch/138531/
State Not Applicable
Headers show

Comments

Kazuya Mio - Jan. 30, 2012, 8:41 a.m.
dquot_free_block() is called in the end of ext3_new_blocks() and updates
information of the inode structure. However, this update is not necessary
if the number of blocks we requested is equal to the number of
allocated blocks.

Signed-off-by: Kazuya Mio <k-mio@sx.jp.nec.com>
---
 fs/ext3/balloc.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
--
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
Jan Kara - Feb. 2, 2012, 4:01 p.m.
On Mon 30-01-12 17:41:25, Kazuya Mio wrote:
> dquot_free_block() is called in the end of ext3_new_blocks() and updates
> information of the inode structure. However, this update is not necessary
> if the number of blocks we requested is equal to the number of
> allocated blocks.
  This is obviously correct thing to do so I've merged this patch into
my tree. Thanks.

								Honza
> 
> Signed-off-by: Kazuya Mio <k-mio@sx.jp.nec.com>
> ---
>  fs/ext3/balloc.c |    7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
> index a203892..954a7d3 100644
> --- a/fs/ext3/balloc.c
> +++ b/fs/ext3/balloc.c
> @@ -1743,8 +1743,11 @@ allocated:
>  
>  	*errp = 0;
>  	brelse(bitmap_bh);
> -	dquot_free_block(inode, *count-num);
> -	*count = num;
> +
> +	if (num < *count) {
> +		dquot_free_block(inode, *count-num);
> +		*count = num;
> +	}
>  
>  	trace_ext3_allocate_blocks(inode, goal, num,
>  				   (unsigned long long)ret_block);

Patch

diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
index a203892..954a7d3 100644
--- a/fs/ext3/balloc.c
+++ b/fs/ext3/balloc.c
@@ -1743,8 +1743,11 @@  allocated:
 
 	*errp = 0;
 	brelse(bitmap_bh);
-	dquot_free_block(inode, *count-num);
-	*count = num;
+
+	if (num < *count) {
+		dquot_free_block(inode, *count-num);
+		*count = num;
+	}
 
 	trace_ext3_allocate_blocks(inode, goal, num,
 				   (unsigned long long)ret_block);