Subject: [bug#35494] [PATCH] file-systems: Support the 'rel-atime' flag.

From: Danny Milosavljevic <[email-masked]>
Date: Mon, 29 Apr 2019 20:56:10 +0200

* guix/build/syscalls.scm (MS_RELATIME): New variable.
* gnu/build/file-systems.scm (mount-flags->bit-mask): Support it.
* doc/guix.texi (File Systems): Document it.
---
 doc/guix.texi              | 9 ++++++---
 gnu/build/file-systems.scm | 2 ++
 guix/build/syscalls.scm    | 2 ++
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index fcee57d9cd..20c9b570c9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10756,9 +10756,12 @@ corresponding device mapping established.
 This is a list of symbols denoting mount flags.  Recognized flags
 include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow
 access to special files), @code{no-suid} (ignore setuid and setgid
-bits), @code{no-atime} (do not update file access times), and @code{no-exec}
-(disallow program execution).  @xref{Mount-Unmount-Remount,,, libc, The GNU C
-Library Reference Manual}, for more information on these flags.
+bits), @code{no-atime} (do not update file access times),
+@code{rel-atime} (update file access time minimally), and
+@code{no-exec} (disallow program execution).
+
+@xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual},
+for more information on these flags.
 
 @item @code{options} (default: @code{#f})
 This is either @code{#f}, or a string denoting mount options passed to the
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 8bb10d574d..06fdf0ccd8 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -577,6 +577,8 @@ corresponds to the symbols listed in FLAGS."
        (logior MS_NOEXEC (loop rest)))
       (('no-atime rest ...)
        (logior MS_NOATIME (loop rest)))
+      (('rel-atime rest ...)
+       (logior MS_RELATIME (loop rest)))
       (()
        0))))
 
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 3316dc8dc5..5039003bcb 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -40,6 +40,7 @@
             MS_NOEXEC
             MS_REMOUNT
             MS_NOATIME
+            MS_RELATIME
             MS_BIND
             MS_MOVE
             MS_STRICTATIME
@@ -455,6 +456,7 @@ the returned procedure is called."
 (define MS_NOATIME         1024)
 (define MS_BIND            4096)
 (define MS_MOVE            8192)
+(define MS_RELATIME     2097152)
 (define MS_STRICTATIME 16777216)
 
 (define MNT_FORCE       1)