[XFS] Now that xfs_setattr is only used for attributes set from ->setattr
it can be switched to take struct iattr directly and thus simplify the implementation greatly. Also rename the ATTR_ flags to XFS_ATTR_ to not conflict with the ATTR_ flags used by the VFS. SGI-PV: 984565 SGI-Modid: xfs-linux-melb:xfs-kern:31678a Signed-off-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Tim Shimmin <tes@sgi.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:

committed by
Niv Sardi

parent
25fe55e814
commit
0f285c8a1c
@@ -719,7 +719,7 @@ xfs_acl_setmode(
|
||||
xfs_acl_t *acl,
|
||||
int *basicperms)
|
||||
{
|
||||
bhv_vattr_t va;
|
||||
struct iattr iattr;
|
||||
xfs_acl_entry_t *ap;
|
||||
xfs_acl_entry_t *gap = NULL;
|
||||
int i, nomask = 1;
|
||||
@@ -733,25 +733,25 @@ xfs_acl_setmode(
|
||||
* Copy the u::, g::, o::, and m:: bits from the ACL into the
|
||||
* mode. The m:: bits take precedence over the g:: bits.
|
||||
*/
|
||||
va.va_mask = XFS_AT_MODE;
|
||||
va.va_mode = xfs_vtoi(vp)->i_d.di_mode;
|
||||
va.va_mode &= ~(S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
iattr.ia_valid = ATTR_MODE;
|
||||
iattr.ia_mode = xfs_vtoi(vp)->i_d.di_mode;
|
||||
iattr.ia_mode &= ~(S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
ap = acl->acl_entry;
|
||||
for (i = 0; i < acl->acl_cnt; ++i) {
|
||||
switch (ap->ae_tag) {
|
||||
case ACL_USER_OBJ:
|
||||
va.va_mode |= ap->ae_perm << 6;
|
||||
iattr.ia_mode |= ap->ae_perm << 6;
|
||||
break;
|
||||
case ACL_GROUP_OBJ:
|
||||
gap = ap;
|
||||
break;
|
||||
case ACL_MASK: /* more than just standard modes */
|
||||
nomask = 0;
|
||||
va.va_mode |= ap->ae_perm << 3;
|
||||
iattr.ia_mode |= ap->ae_perm << 3;
|
||||
*basicperms = 0;
|
||||
break;
|
||||
case ACL_OTHER:
|
||||
va.va_mode |= ap->ae_perm;
|
||||
iattr.ia_mode |= ap->ae_perm;
|
||||
break;
|
||||
default: /* more than just standard modes */
|
||||
*basicperms = 0;
|
||||
@@ -762,9 +762,9 @@ xfs_acl_setmode(
|
||||
|
||||
/* Set the group bits from ACL_GROUP_OBJ if there's no ACL_MASK */
|
||||
if (gap && nomask)
|
||||
va.va_mode |= gap->ae_perm << 3;
|
||||
iattr.ia_mode |= gap->ae_perm << 3;
|
||||
|
||||
return xfs_setattr(xfs_vtoi(vp), &va, 0, sys_cred);
|
||||
return xfs_setattr(xfs_vtoi(vp), &iattr, 0, sys_cred);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user