| From 456f450ba99dab1a4109b53744161ba0eddcf6ee Mon Sep 17 00:00:00 2001 |
| From: Dmitry Monakhov <dmonakhov@openvz.org> |
| Date: Tue, 8 Dec 2009 22:42:28 -0500 |
| Subject: [PATCH 83/85] ext4: fix incorrect block reservation on quota transfer. |
| |
| (cherry picked from commit 194074acacebc169ded90a4657193f5180015051) |
| |
| Inside ->setattr() call both ATTR_UID and ATTR_GID may be valid |
| This means that we may end-up with transferring all quotas. Add |
| we have to reserve QUOTA_DEL_BLOCKS for all quotas, as we do in |
| case of QUOTA_INIT_BLOCKS. |
| |
| Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> |
| Reviewed-by: Mingming Cao <cmm@us.ibm.com> |
| Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/ext4/inode.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/ext4/inode.c |
| +++ b/fs/ext4/inode.c |
| @@ -5222,7 +5222,7 @@ int ext4_setattr(struct dentry *dentry, |
| /* (user+group)*(old+new) structure, inode write (sb, |
| * inode block, ? - but truncate inode update has it) */ |
| handle = ext4_journal_start(inode, (EXT4_MAXQUOTAS_INIT_BLOCKS(inode->i_sb)+ |
| - EXT4_QUOTA_DEL_BLOCKS(inode->i_sb))+3); |
| + EXT4_MAXQUOTAS_DEL_BLOCKS(inode->i_sb))+3); |
| if (IS_ERR(handle)) { |
| error = PTR_ERR(handle); |
| goto err_out; |