[BUG] $ sudo ./check generic/003 FSTYP -- hfsplus PLATFORM -- Linux/x86_64 graphic 6.8.0-58-generic #60~22.04.1-Ubuntu MKFS_OPTIONS -- /dev/loop29 MOUNT_OPTIONS -- /dev/loop29 /mnt/scratch generic/003 - output mismatch --- tests/generic/003.out 2025-04-27 08:49:39.876945323 -0600 +++ /home/graphic/fs/xfstests-dev/results//generic/003.out.bad QA output created by 003 +ERROR: change time has not been updated after changing file1 Silence is golden ... Ran: generic/003 Failures: generic/003 Failed 1 of 1 tests [CAUSE] change time has not been updated after changing file1 [FIX] Update file ctime after rename in hfsplus_rename(). Signed-off-by: Yangtao Li <frank.li@xxxxxxxx> Tested-by: Viacheslav Dubeyko <slava@xxxxxxxxxxx> Reviewed-by: Viacheslav Dubeyko <slava@xxxxxxxxxxx> --- fs/hfsplus/dir.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c index 876bbb80fb4d..e77942440240 100644 --- a/fs/hfsplus/dir.c +++ b/fs/hfsplus/dir.c @@ -534,6 +534,7 @@ static int hfsplus_rename(struct mnt_idmap *idmap, struct inode *new_dir, struct dentry *new_dentry, unsigned int flags) { + struct inode *inode = d_inode(old_dentry); int res; if (flags & ~RENAME_NOREPLACE) @@ -552,9 +553,13 @@ static int hfsplus_rename(struct mnt_idmap *idmap, res = hfsplus_rename_cat((u32)(unsigned long)old_dentry->d_fsdata, old_dir, &old_dentry->d_name, new_dir, &new_dentry->d_name); - if (!res) - new_dentry->d_fsdata = old_dentry->d_fsdata; - return res; + if (res) + return res; + + new_dentry->d_fsdata = old_dentry->d_fsdata; + inode_set_ctime_current(inode); + mark_inode_dirty(inode); + return 0; } const struct inode_operations hfsplus_dir_inode_operations = { -- 2.48.1