2018-11-17 19:18:06

by Chengguang Xu

[permalink] [raw]
Subject: [PATCH] ext4: compare old and new mode before setting update_mode flag

If new mode is the same as old mode we don't have to reset
inode mode in the rest of the code, so compare old and new
mode before setting update_mode flag.

Signed-off-by: Chengguang Xu <[email protected]>
---
fs/ext4/acl.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
index c1d570ee1d9f..8c7bbf3e566d 100644
--- a/fs/ext4/acl.c
+++ b/fs/ext4/acl.c
@@ -248,7 +248,8 @@ ext4_set_acl(struct inode *inode, struct posix_acl *acl, int type)
error = posix_acl_update_mode(inode, &mode, &acl);
if (error)
goto out_stop;
- update_mode = 1;
+ if (mode != inode->i_mode)
+ update_mode = 1;
}

error = __ext4_set_acl(handle, inode, type, acl, 0 /* xattr_flags */);
--
2.17.2


2018-12-10 05:25:51

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH] ext4: compare old and new mode before setting update_mode flag

On Sat, Nov 17, 2018 at 05:01:52PM +0800, Chengguang Xu wrote:
> If new mode is the same as old mode we don't have to reset
> inode mode in the rest of the code, so compare old and new
> mode before setting update_mode flag.
>
> Signed-off-by: Chengguang Xu <[email protected]>

Thanks, applied.

I know Jan declined the equivalent patch for ext2; but it doesn't add
_that_ much extra complexity, and ext4_mark_inode_dirty() is rather
more heavyweight than ext2_mark_inode_dirty().

- Ted