I've been cooking a very simple patch that hopefully gives both sides
of the "great strictatime war" what they want with minimal pain. I
sent it through kernelnewbies for a basic review and got some polish on
irc.
----
Signed-off-by: Raymond Jennings <shentino@xxxxxxxxx>
Reviewed-by: Mandeep Sandhu <mandeepsandhu.chd@xxxxxxxxx>
diff --git a/fs/Kconfig b/fs/Kconfig
index 6ce72d8..122a993 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -4,6 +4,20 @@
menu "File systems"
+config DEFAULT_STRICTATIME
+ bool "Use strictatime by default"
+ default n
+ help
+ Use strictatime as a default mount option.
+
+ Relatime became the default in 2007 to reduce I/O load on block
devices.
+
+ Enabling this option will restore historic behavior and provide
perfectly
+ accurate atimes, but the increase in write load may reduce
performance
+ and shorten the life of the block device.
+
+ If unsure, say N.
+
# Use unaligned word dcache accesses
config DCACHE_WORD_ACCESS
bool
diff --git a/fs/namespace.c b/fs/namespace.c
index 0570729..48e7c15 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -2680,9 +2680,15 @@ long do_mount(const char *dev_name, const char
__user *dir_name,
if (retval)
goto dput_out;
- /* Default to relatime unless overriden */
+#ifdef CONFIG_DEFAULT_STRICTATIME
+ /* Default to strictatime unless overridden */
+ if (flags & MS_RELATIME)
+ mnt_flags |= MNT_RELATIME;
+#else
+ /* Default to relatime unless overridden */
if (!(flags & MS_NOATIME))
mnt_flags |= MNT_RELATIME;
+#endif
/* Separate the per-mountpoint flags */
if (flags & MS_NOSUID)
---------- Forwarded message ----------
From: Mandeep Sandhu <mandeepsandhu.chd@xxxxxxxxx>
Subject: Re: [PATCH] allow strictatime to be set as a global default
Date: Sat, 19 Dec 2015 17:25:37 -0800
To: Raymond Jennings <shentino@xxxxxxxxx>
Cc: kernelnewbies <kernelnewbies@xxxxxxxxxxxxxxxxx>
Looks good to me.
To test the real waters....you should send it to the lists you
mentioned (or whatever the maintainers script tells you).
Good luck,
-mandeep
On Sat, Dec 19, 2015 at 1:41 PM, Raymond Jennings <shentino@xxxxxxxxx>
wrote:
How does this version look?
(the other delta for the other file was untouched)
Any chance it is ready to post to the big list (presumably fs with a
cc to
lkml)?
diff --git a/fs/Kconfig b/fs/Kconfig
index 6ce72d8..122a993 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -4,6 +4,20 @@
menu "File systems"
+config DEFAULT_STRICTATIME
+ bool "Use strictatime by default"
+ default n
+ help
+ Use strictatime as a default mount option.
+
+ Relatime became the default in 2007 to reduce I/O load on block
devices.
+
+ Enabling this option will restore historic behavior and provide
perfectly
+ accurate atimes, but the increase in write load may reduce
performance
+ and shorten the life of the block device.
+
+ If unsure, say N.
+
# Use unaligned word dcache accesses
config DCACHE_WORD_ACCESS
bool
On Fri, Dec 18, 2015 at 2:21 PM, Mandeep Sandhu
<mandeepsandhu.chd@xxxxxxxxx> wrote:
Ah yes...now it makes sense! :)
The current 'word of caution' (about increased I/O load on block
devices), seems mild IMHO. Maybe we should we have a stricter
warning...something like enabling this option might be harmful to
the
life of your block device (due to excessive writes) and will also
lead
to reduced performance?
HTH,
-mandeep
On Fri, Dec 18, 2015 at 2:12 PM, Raymond Jennings
<shentino@xxxxxxxxx>
wrote:
> On Fri, Dec 18, 2015 at 10:50 AM, Mandeep Sandhu
> <mandeepsandhu.chd@xxxxxxxxx> wrote:
>>
>> You've removed the strictatime option altogether. So how does
that
>> satisfy people who _do_ want it?
>
>
> ...actually it looks like I was an idiot and got my diff
backwards when
> I
> pulled it out of git :P
>
> Here's the correct version.
>
> diff --git a/fs/Kconfig b/fs/Kconfig
> index 6ce72d8..4b917eb 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -4,6 +4,17 @@
>
> menu "File systems"
>
> +config DEFAULT_STRICTATIME
> + bool "Use strictatime by default"
> + default n
> + help
> + Use strictatime as a default mount option.
> +
> + Strictatime preserves ancient historic behavior of
keeping the
> atime field always up to date.
> + However, it was changed in 2007 to relatime to reduce
I/O load
> on
> block devices.
> +
> + If unsure, say N.
> +
> # Use unaligned word dcache accesses
> config DCACHE_WORD_ACCESS
> bool
> diff --git a/fs/namespace.c b/fs/namespace.c
> index 0570729..48e7c15 100644
> --- a/fs/namespace.c
> +++ b/fs/namespace.c
> @@ -2680,9 +2680,15 @@ long do_mount(const char *dev_name, const
char
> __user
> *dir_name,
> if (retval)
> goto dput_out;
>
> - /* Default to relatime unless overriden */
> +#ifdef CONFIG_DEFAULT_STRICTATIME
> + /* Default to strictatime unless overridden */
> + if (flags & MS_RELATIME)
> + mnt_flags |= MNT_RELATIME;
> +#else
> + /* Default to relatime unless overridden */
> if (!(flags & MS_NOATIME))
> mnt_flags |= MNT_RELATIME;
> +#endif
>
>
> /* Separate the per-mountpoint flags */
> if (flags & MS_NOSUID)
>
>
>
--
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