diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2010-07-22 01:19:42 +0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-08-09 16:47:55 -0400 |
commit | addacc7d6f0f0bcce12adf9fe9e6455e1dfd74da (patch) | |
tree | 8743c3586ebc9691fe45b2783e13500ad33b584d | |
parent | 3889717d2851bf38015c0b291026c07c02264623 (diff) | |
download | linux-stable-addacc7d6f0f0bcce12adf9fe9e6455e1dfd74da.tar.gz linux-stable-addacc7d6f0f0bcce12adf9fe9e6455e1dfd74da.tar.bz2 linux-stable-addacc7d6f0f0bcce12adf9fe9e6455e1dfd74da.zip |
Take dirtying the inode to callers of ext2_free_blocks()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | fs/ext2/balloc.c | 1 | ||||
-rw-r--r-- | fs/ext2/inode.c | 6 | ||||
-rw-r--r-- | fs/ext2/xattr.c | 3 |
3 files changed, 7 insertions, 3 deletions
diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c index db69c1206f13..c6c684b44ea1 100644 --- a/fs/ext2/balloc.c +++ b/fs/ext2/balloc.c @@ -572,7 +572,6 @@ error_return: brelse(bitmap_bh); release_blocks(sb, freed); dquot_free_block_nodirty(inode, freed); - mark_inode_dirty(inode); } /** diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index 069620b30d4d..e8af26dd6715 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c @@ -423,6 +423,8 @@ static int ext2_alloc_blocks(struct inode *inode, failed_out: for (i = 0; i <index; i++) ext2_free_blocks(inode, new_blocks[i], 1); + if (index) + mark_inode_dirty(inode); return ret; } @@ -993,8 +995,8 @@ static inline void ext2_free_data(struct inode *inode, __le32 *p, __le32 *q) else if (block_to_free == nr - count) count++; else { - mark_inode_dirty(inode); ext2_free_blocks (inode, block_to_free, count); + mark_inode_dirty(inode); free_this: block_to_free = nr; count = 1; @@ -1002,8 +1004,8 @@ static inline void ext2_free_data(struct inode *inode, __le32 *p, __le32 *q) } } if (count > 0) { - mark_inode_dirty(inode); ext2_free_blocks (inode, block_to_free, count); + mark_inode_dirty(inode); } } diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c index 0fa24e814d8a..25ff041058a7 100644 --- a/fs/ext2/xattr.c +++ b/fs/ext2/xattr.c @@ -674,6 +674,7 @@ ext2_xattr_set2(struct inode *inode, struct buffer_head *old_bh, new_bh = sb_getblk(sb, block); if (!new_bh) { ext2_free_blocks(inode, block, 1); + mark_inode_dirty(inode); error = -EIO; goto cleanup; } @@ -729,6 +730,7 @@ ext2_xattr_set2(struct inode *inode, struct buffer_head *old_bh, mb_cache_entry_free(ce); ea_bdebug(old_bh, "freeing"); ext2_free_blocks(inode, old_bh->b_blocknr, 1); + mark_inode_dirty(inode); /* We let our caller release old_bh, so we * need to duplicate the buffer before. */ get_bh(old_bh); @@ -789,6 +791,7 @@ ext2_xattr_delete_inode(struct inode *inode) if (ce) mb_cache_entry_free(ce); ext2_free_blocks(inode, EXT2_I(inode)->i_file_acl, 1); + mark_inode_dirty(inode); get_bh(bh); bforget(bh); unlock_buffer(bh); |