|
@@ -37,7 +37,14 @@ reiserfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
|
|
|
error = journal_begin(&th, inode->i_sb, jcreate_blocks);
|
|
|
reiserfs_write_unlock(inode->i_sb);
|
|
|
if (error == 0) {
|
|
|
+ if (type == ACL_TYPE_ACCESS && acl) {
|
|
|
+ error = posix_acl_update_mode(inode, &inode->i_mode,
|
|
|
+ &acl);
|
|
|
+ if (error)
|
|
|
+ goto unlock;
|
|
|
+ }
|
|
|
error = __reiserfs_set_acl(&th, inode, type, acl);
|
|
|
+unlock:
|
|
|
reiserfs_write_lock(inode->i_sb);
|
|
|
error2 = journal_end(&th);
|
|
|
reiserfs_write_unlock(inode->i_sb);
|
|
@@ -241,11 +248,6 @@ __reiserfs_set_acl(struct reiserfs_transaction_handle *th, struct inode *inode,
|
|
|
switch (type) {
|
|
|
case ACL_TYPE_ACCESS:
|
|
|
name = XATTR_NAME_POSIX_ACL_ACCESS;
|
|
|
- if (acl) {
|
|
|
- error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
|
|
|
- if (error)
|
|
|
- return error;
|
|
|
- }
|
|
|
break;
|
|
|
case ACL_TYPE_DEFAULT:
|
|
|
name = XATTR_NAME_POSIX_ACL_DEFAULT;
|