Re: [patch] implement smarter atime updates support

Arjan van de Ven
2007-08-05T19:55:25Z

> +static int relatime_need_update(struct inode *inode, struct timespec now)
> +{
> + /*
> + * Is mtime younger than atime? If yes, update atime:
> + */
> + if (timespec_compare(&inode->i_mtime, &inode->i_atime) >= 0)
> + return 1;
> + /*
> + * Is ctime younger than atime? If yes, update atime:
> + */
> + if (timespec_compare(&inode->i_ctime, &inode->i_atime) >= 0)
> + return 1;
> +
> + /*
> + * Is the previous atime value older than a day? If yes,
> + * update atime:
> + */
> + if ((long)(now.tv_sec - inode->i_atime.tv_sec) >= 24*60*60)
> + return 1;

you might want to add

/*
* if the inode is dirty already, do the atime update since
* we'll be doing the disk IO anyway to clean the inode.
*/
if (inode->i_state & I_DIRTY)
return 1;