ceph: fix ceph_set_acl()
If acl is equivalent to file mode permission bits, ceph_set_acl() needs to remove any existing acl xattr. Use __ceph_setxattr() to handle both setting and removing acl xattr cases, it doesn't return -ENODATA when there is no acl xattr. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
This commit is contained in:
parent
524186ace6
commit
7a92d64760
@ -160,11 +160,7 @@ int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type)
|
|||||||
goto out_dput;
|
goto out_dput;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value)
|
ret = __ceph_setxattr(dentry, name, value, size, 0);
|
||||||
ret = __ceph_setxattr(dentry, name, value, size, 0);
|
|
||||||
else
|
|
||||||
ret = __ceph_removexattr(dentry, name);
|
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (new_mode != old_mode) {
|
if (new_mode != old_mode) {
|
||||||
newattrs.ia_mode = old_mode;
|
newattrs.ia_mode = old_mode;
|
||||||
|
Loading…
Reference in New Issue
Block a user