diff options
Diffstat (limited to 'fs/ext2/inode.c')
-rw-r--r-- | fs/ext2/inode.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index 36ae1cac767c..fc13cc119aad 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c | |||
@@ -60,6 +60,8 @@ static inline int ext2_inode_is_fast_symlink(struct inode *inode) | |||
60 | */ | 60 | */ |
61 | void ext2_delete_inode (struct inode * inode) | 61 | void ext2_delete_inode (struct inode * inode) |
62 | { | 62 | { |
63 | if (!is_bad_inode(inode)) | ||
64 | dquot_initialize(inode); | ||
63 | truncate_inode_pages(&inode->i_data, 0); | 65 | truncate_inode_pages(&inode->i_data, 0); |
64 | 66 | ||
65 | if (is_bad_inode(inode)) | 67 | if (is_bad_inode(inode)) |
@@ -1464,9 +1466,12 @@ int ext2_setattr(struct dentry *dentry, struct iattr *iattr) | |||
1464 | error = inode_change_ok(inode, iattr); | 1466 | error = inode_change_ok(inode, iattr); |
1465 | if (error) | 1467 | if (error) |
1466 | return error; | 1468 | return error; |
1469 | |||
1470 | if (iattr->ia_valid & ATTR_SIZE) | ||
1471 | dquot_initialize(inode); | ||
1467 | if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) || | 1472 | if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) || |
1468 | (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) { | 1473 | (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) { |
1469 | error = vfs_dq_transfer(inode, iattr) ? -EDQUOT : 0; | 1474 | error = dquot_transfer(inode, iattr); |
1470 | if (error) | 1475 | if (error) |
1471 | return error; | 1476 | return error; |
1472 | } | 1477 | } |