mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
fs/ntfs3: update mode in xattr when ACL can be reduced to mode
If a file's ACL can be reduced to standard mode bits, update mode accordingly, persist the change, and update the cached ACL. This keeps mode and ACL consistent and avoids redundant xattrs. Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
@@ -654,12 +654,22 @@ static noinline int ntfs_set_acl_ex(struct mnt_idmap *idmap,
|
||||
err = ntfs_set_ea(inode, name, name_len, value, size, flags, 0, NULL);
|
||||
if (err == -ENODATA && !size)
|
||||
err = 0; /* Removing non existed xattr. */
|
||||
if (!err) {
|
||||
set_cached_acl(inode, type, acl);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
if (inode->i_mode != mode) {
|
||||
umode_t old_mode = inode->i_mode;
|
||||
inode->i_mode = mode;
|
||||
err = ntfs_save_wsl_perm(inode, NULL);
|
||||
if (err) {
|
||||
inode->i_mode = old_mode;
|
||||
goto out;
|
||||
}
|
||||
inode->i_mode = mode;
|
||||
inode_set_ctime_current(inode);
|
||||
mark_inode_dirty(inode);
|
||||
}
|
||||
set_cached_acl(inode, type, acl);
|
||||
inode_set_ctime_current(inode);
|
||||
mark_inode_dirty(inode);
|
||||
|
||||
out:
|
||||
kfree(value);
|
||||
|
||||
Reference in New Issue
Block a user