aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorWang Shilong <wangsl-fnst@cn.fujitsu.com>2013-02-07 09:57:53 -0500
committerJan Kara <jack@suse.cz>2013-02-07 10:44:55 -0500
commit8e3dffc651cb668e1ff4d8b89cc1c3dde7540d3b (patch)
treed2cfcb7be0d255f28c5e793856876449934606bb /fs
parent98783e453c1084527388ec1a7f6367cd6aabbe63 (diff)
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')
-rw-r--r--fs/ext2/balloc.c15
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:
568 } 568 }
569error_return: 569error_return:
570 brelse(bitmap_bh); 570 brelse(bitmap_bh);
571 release_blocks(sb, freed); 571 if (freed) {
572 dquot_free_block_nodirty(inode, freed); 572 release_blocks(sb, freed);
573 dquot_free_block_nodirty(inode, freed);
574 mark_inode_dirty(inode);
575 }
573} 576}
574 577
575/** 578/**
@@ -1412,9 +1415,11 @@ allocated:
1412 1415
1413 *errp = 0; 1416 *errp = 0;
1414 brelse(bitmap_bh); 1417 brelse(bitmap_bh);
1415 dquot_free_block_nodirty(inode, *count-num); 1418 if (num < *count) {
1416 mark_inode_dirty(inode); 1419 dquot_free_block_nodirty(inode, *count-num);
1417 *count = num; 1420 mark_inode_dirty(inode);
1421 *count = num;
1422 }
1418 return ret_block; 1423 return ret_block;
1419 1424
1420io_error: 1425io_error: