Similar to hfsplus, let's update file ctime after the rename operation in hfs_rename(). Signed-off-by: Yangtao Li <frank.li@xxxxxxxx> --- fs/hfs/dir.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/fs/hfs/dir.c b/fs/hfs/dir.c index 86a6b317b474..3b95bafb3f04 100644 --- a/fs/hfs/dir.c +++ b/fs/hfs/dir.c @@ -284,6 +284,7 @@ static int hfs_rename(struct mnt_idmap *idmap, struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry, unsigned int flags) { + struct inode *inode = d_inode(old_dentry); int res; if (flags & ~RENAME_NOREPLACE) @@ -299,11 +300,15 @@ static int hfs_rename(struct mnt_idmap *idmap, struct inode *old_dir, res = hfs_cat_move(d_inode(old_dentry)->i_ino, old_dir, &old_dentry->d_name, new_dir, &new_dentry->d_name); - if (!res) - hfs_cat_build_key(old_dir->i_sb, - (btree_key *)&HFS_I(d_inode(old_dentry))->cat_key, - new_dir->i_ino, &new_dentry->d_name); - return res; + if (res) + return res; + + hfs_cat_build_key(old_dir->i_sb, + (btree_key *)&HFS_I(d_inode(old_dentry))->cat_key, + new_dir->i_ino, &new_dentry->d_name); + inode_set_ctime_current(inode); + mark_inode_dirty(inode); + return 0; } const struct file_operations hfs_dir_operations = { -- 2.39.0