Fwd: Re: [PATCH] allow strictatime to be set as a global default

Raymond Jennings shentino at gmail.com
Fri Dec 25 12:23:06 EST 2015


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 at gmail.com>
Reviewed-by: Mandeep Sandhu <mandeepsandhu.chd at gmail.com>

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 at gmail.com>
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 at gmail.com>
Cc: kernelnewbies <kernelnewbies at kernelnewbies.org>

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 at gmail.com> 
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 at gmail.com> 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 at gmail.com>
>>  wrote:
>>  > On Fri, Dec 18, 2015 at 10:50 AM, Mandeep Sandhu
>>  > <mandeepsandhu.chd at gmail.com> 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)
>>  >
>>  >
>>  >
> 
> 




More information about the Kernelnewbies mailing list