ext3: Don't call dquot_free_block() if we don't update anything
authorKazuya Mio <k-mio@sx.jp.nec.com>
Mon, 30 Jan 2012 08:41:25 +0000 (17:41 +0900)
committerJan Kara <jack@suse.cz>
Wed, 29 Feb 2012 20:53:46 +0000 (21:53 +0100)
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>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/ext3/balloc.c

index a203892..954a7d3 100644 (file)
@@ -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);