diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-02-05 02:50:47 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2018-02-05 02:50:47 -0500 |
commit | 37924cb36e8e67da483459c6963004e132227efe (patch) | |
tree | dd96e487e445db5ec771e343bf068a7a3fe7633d | |
parent | 7ca94bff08883ab97dc1e4e3bbe1c63cc66be9bb (diff) |
bcachefs: call posix_acl_update_mode() from bch2_set_acl
fixes xfstest 375
-rw-r--r-- | fs/bcachefs/acl.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/bcachefs/acl.c b/fs/bcachefs/acl.c index 480941d64e2a..4016ab965972 100644 --- a/fs/bcachefs/acl.c +++ b/fs/bcachefs/acl.c @@ -185,6 +185,24 @@ int bch2_set_acl(struct inode *vinode, struct posix_acl *acl, int type) size_t size = 0; int ret; + if (type == ACL_TYPE_ACCESS && acl) { + umode_t mode = inode->v.i_mode; + + ret = posix_acl_update_mode(&inode->v, &mode, &acl); + if (ret) + return ret; + + mutex_lock(&inode->ei_update_lock); + inode->v.i_mode = mode; + inode->v.i_ctime = current_time(&inode->v); + + ret = bch2_write_inode(c, inode); + mutex_unlock(&inode->ei_update_lock); + + if (ret) + return ret; + } + switch (type) { case ACL_TYPE_ACCESS: name_index = BCH_XATTR_INDEX_POSIX_ACL_ACCESS; |