Re: Relative atime (was Re: What's in ocfs2.git)

From: Karel Zak
Date: Tue Dec 12 2006 - 04:31:17 EST


On Fri, Dec 08, 2006 at 07:15:14PM -0800, Valerie Henson wrote:
> On Tue, Dec 05, 2006 at 08:58:02PM -0800, Andrew Morton wrote:
> > That's the easy part. How are we going to get mount(8) patched?
>
> Karel, interested in taking a look at the following patch? The kernel
> bits are in -mm currently.

The patch looks good. I'll add it to my development util-linux tree.
Thanks.

Karel

> Add the "relatime" (relative atime) option support to mount. Relative
> atime only updates the atime if the previous atime is older than the
> mtime or ctime. Like noatime, but useful for applications like mutt
> that need to know when a file has been read since it was last
> modified.
>
> Cc: Adrian Bunk <bunk@xxxxxxxxx>
> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
> Cc: Karel Zak <kzak@xxxxxxxxxx>
>
> Signed-off-by: Valerie Henson <val_henson@xxxxxxxxxxxxxxx>
>
> ---
> mount/mount.8 | 7 +++++++
> mount/mount.c | 6 ++++++
> mount/mount_constants.h | 4 ++++
> 3 files changed, 17 insertions(+)
>
> --- util-linux-2.13-pre7.orig/mount/mount.8
> +++ util-linux-2.13-pre7/mount/mount.8
> @@ -586,6 +586,13 @@ access on the news spool to speed up new
> .B nodiratime
> Do not update directory inode access times on this filesystem.
> .TP
> +.B relatime
> +Update inode access times relative to modify or change time. Access
> +time is only updated if the previous access time was earlier than the
> +current modify or change time. (Similar to noatime, but doesn't break
> +mutt or other applications that need to know if a file has been read
> +since the last time it was modified.)
> +.TP
> .B noauto
> Can only be mounted explicitly (i.e., the
> .B \-a
> --- util-linux-2.13-pre7.orig/mount/mount.c
> +++ util-linux-2.13-pre7/mount/mount.c
> @@ -164,6 +164,12 @@ static const struct opt_map opt_map[] =
> { "diratime", 0, 1, MS_NODIRATIME }, /* Update dir access times */
> { "nodiratime", 0, 0, MS_NODIRATIME },/* Do not update dir access times */
> #endif
> +#ifdef MS_RELATIME
> + { "relatime", 0, 0, MS_RELATIME }, /* Update access times relative to
> + mtime/ctime */
> + { "norelatime", 0, 1, MS_RELATIME }, /* Update access time without regard
> + to mtime/ctime */
> +#endif
> { NULL, 0, 0, 0 }
> };
>
> --- util-linux-2.13-pre7.orig/mount/mount_constants.h
> +++ util-linux-2.13-pre7/mount/mount_constants.h
> @@ -57,6 +57,10 @@ if we have a stack or plain mount - moun
> #ifndef MS_VERBOSE
> #define MS_VERBOSE 0x8000 /* 32768 */
> #endif
> +#ifndef MS_RELATIME
> +#define MS_RELATIME 0x200000 /* 200000: Update access times relative
> + to mtime/ctime */
> +#endif
> /*
> * Magic mount flag number. Had to be or-ed to the flag values.
> */
> -
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Karel Zak <kzak@xxxxxxxxxx>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/