@@ -351,10 +351,9 @@ ext4_acl_chmod(struct inode *inode)
retry:
handle = ext4_journal_start(inode,
- EXT4_DATA_TRANS_BLOCKS(inode->i_sb));
+ EXT4_DATA_TRANS_BLOCKS(inode->i_sb), true);
if (IS_ERR(handle)) {
error = PTR_ERR(handle);
- ext4_std_error(inode->i_sb, error);
goto out;
}
error = ext4_set_acl(handle, inode, ACL_TYPE_ACCESS, clone);
@@ -449,9 +448,12 @@ ext4_xattr_set_acl(struct dentry *dentry, const
char *name, const void *value,
acl = NULL;
retry:
- handle = ext4_journal_start(inode, EXT4_DATA_TRANS_BLOCKS(inode->i_sb));
- if (IS_ERR(handle))
- return PTR_ERR(handle);
+ handle = ext4_journal_start(inode,
+ EXT4_DATA_TRANS_BLOCKS(inode->i_sb), true);
+ if (IS_ERR(handle)) {
+ error = PTR_ERR(handle);
+ goto release_and_out;
+ }
error = ext4_set_acl(handle, inode, type, acl);
ext4_journal_stop(handle);
Following patch updates ext4 acl routines to allow failures during journal transaction allocation. Also update the error path to frop acl handle in case of failures. Signed-off-by: Manish Katiyar <mkatiyar@gmail.com> --- fs/ext4/acl.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) if (error == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries))