diff options
author | Wang Shilong <wangsl-fnst@cn.fujitsu.com> | 2013-02-07 22:57:53 +0800 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2013-02-07 16:44:55 +0100 |
commit | 8e3dffc651cb668e1ff4d8b89cc1c3dde7540d3b (patch) | |
tree | d2cfcb7be0d255f28c5e793856876449934606bb /fs/ext2 | |
parent | 98783e453c1084527388ec1a7f6367cd6aabbe63 (diff) | |
download | lwn-8e3dffc651cb668e1ff4d8b89cc1c3dde7540d3b.tar.gz lwn-8e3dffc651cb668e1ff4d8b89cc1c3dde7540d3b.zip |
Ext2: mark inode dirty after the function dquot_free_block_nodirty is called
We should mark inode dirty after the function dquot_free_block_nodirty
is called.Besides,add a check whether it is necessary to call
dquot_free_block_nodirty functon.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/ext2')
-rw-r--r-- | fs/ext2/balloc.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c index ea88181932df..132da4c0692f 100644 --- a/fs/ext2/balloc.c +++ b/fs/ext2/balloc.c @@ -568,8 +568,11 @@ do_more: } error_return: brelse(bitmap_bh); - release_blocks(sb, freed); - dquot_free_block_nodirty(inode, freed); + if (freed) { + release_blocks(sb, freed); + dquot_free_block_nodirty(inode, freed); + mark_inode_dirty(inode); + } } /** @@ -1412,9 +1415,11 @@ allocated: *errp = 0; brelse(bitmap_bh); - dquot_free_block_nodirty(inode, *count-num); - mark_inode_dirty(inode); - *count = num; + if (num < *count) { + dquot_free_block_nodirty(inode, *count-num); + mark_inode_dirty(inode); + *count = num; + } return ret_block; io_error: |