Re: [PATCH v2 2/3] hfs: correct superblock flags

From: Viacheslav Dubeyko
Date: Tue May 27 2025 - 18:36:30 EST


On Mon, 2025-05-19 at 10:52 -0600, Yangtao Li wrote:
> We don't support atime updates of any kind,
> because hfs actually does not have atime.
>
>    dirCrDat:      LongInt;    {date and time of creation}
>    dirMdDat:      LongInt;    {date and time of last modification}
>    dirBkDat:      LongInt;    {date and time of last backup}
>
>    filCrDat:      LongInt;    {date and time of creation}
>    filMdDat:      LongInt;    {date and time of last modification}
>    filBkDat:      LongInt;    {date and time of last backup}
>
> W/O patch(xfstest generic/003):
>
>  +ERROR: access time has changed for file1 after remount
>  +ERROR: access time has changed after modifying file1
>  +ERROR: change time has not been updated after changing file1
>  +ERROR: access time has changed for file in read-only filesystem
>
> W/ patch(xfstest generic/003):
>
>  +ERROR: access time has not been updated after accessing file1 first
> time
>  +ERROR: access time has not been updated after accessing file2
>  +ERROR: access time has changed after modifying file1
>  +ERROR: change time has not been updated after changing file1
>  +ERROR: access time has not been updated after accessing file3
> second time
>  +ERROR: access time has not been updated after accessing file3 third
> time
>

I am slightly confused by comment. Does it mean that the fix introduces
more errors? It looks like we need to have more clear explanation of
the fix here.

> Signed-off-by: Yangtao Li <frank.li@xxxxxxxx>
> ---
>  fs/hfs/super.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/hfs/super.c b/fs/hfs/super.c
> index fe09c2093a93..9fab84b157b4 100644
> --- a/fs/hfs/super.c
> +++ b/fs/hfs/super.c
> @@ -331,7 +331,7 @@ static int hfs_fill_super(struct super_block *sb,
> struct fs_context *fc)
>   sbi->sb = sb;
>   sb->s_op = &hfs_super_operations;
>   sb->s_xattr = hfs_xattr_handlers;
> - sb->s_flags |= SB_NODIRATIME;
> + sb->s_flags |= SB_NOATIME;

I believe we need to have two flags here:

s->s_flags |= SB_NODIRATIME | SB_NOATIME;


Thanks,
Slava.

>   mutex_init(&sbi->bitmap_lock);
>  
>   res = hfs_mdb_get(sb);