Re: [PATCH] flush inode when changing atime.

Lachlan McIlroy
2007-10-18T03:48:07Z

David Chinner wrote:
> On Wed, Oct 17, 2007 at 01:56:00PM +0900, Utako Kusaka wrote:
>> Hi,
>>
>> The atime is changed for reading but it returns to a previous value
>> after unmount. i_update_core is still off after reading a file using
>> read(), readdir() and readlink(). So an inode isn't flushed to disk.
>
> I think this was done by design - Christoph? I can't remember exactly
> as it was more than two years ago this change was made. It is effectively
> equivalent to using the relatime mount option.
>
> The question is whether we want to change the default behaviour or
> whether we need to supply an "atimeisatime" mount option for those
> that really need atime to be updated on every access.
>
If we change it back then will anything that scans the filesystem cause
inodes to be dirtied and create a lot of inode flush traffic that we
don't currently have?

>> I referred to following fix when I made a patch:
>> TAKE 946679 - fix, speedup and simplify atime handling
>> http://marc.info/?l=linux-xfs&m=113398234310217&w=4
>
> Yes, that was the patch that removed the explicit atime updates
> in the XFS code. Your fix is reverting part of that change.
>
>> --- linux-2.6-xfs.orig/fs/xfs/xfs_vnodeops.c 2007-10-15 15:50:10.000000000 +0900
>> +++ linux-2.6-xfs/fs/xfs/xfs_vnodeops.c 2007-10-15 16:49:35.000000000 +0900
>> @@ -1003,6 +1003,8 @@ xfs_readlink(
>> error = xfs_readlink_bmap(ip, link);
>> }
>>
>> + ip->i_update_core = 1;
>> +
>
> If we are going to put these back in, then they should be
> calls to xfs_ichgtime_fast() so that we know what the reason
> for marking the core dirty is.
>

xfs_ichgtime_fast() will also dirty the linux inode so that sync
will push out the change.