Subject: [bug #35475] [PATCH] Add filesystem flag NOATIME

From: rendaw <[email-masked]>
Date: Mon, 29 Apr 2019 01:02:33 +0900

Add a no-atime flag to the file-system flags parameter and updates the
relevant documentation.

I believe these changes in the documentation give readers a starting
point for how to understand flags vs options, as well as indicate that
the reference is complete (that there isn't a separate reference with
more flags listed somewhere).

>From e7dcba4a76d624470d05172390dde8151fdb4750 Mon Sep 17 00:00:00 2001
From: rendaw <>
Date: Mon, 29 Apr 2019 01:00:17 +0900
Subject: [PATCH] [bug #35475] [PATCH] Add filesystem flag NOATIME

Add a no-atime flag to the file-system flags parameter and updates the relevant documentation.
---
 doc/guix.texi              | 11 +++++++----
 gnu/build/file-systems.scm |  2 ++
 guix/build/syscalls.scm    |  2 ++
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 879cb562e9..8b89bdec53 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10726,13 +10726,16 @@ the system knows that mounting the file system depends on having the
 corresponding device mapping established.
 
 @item @code{flags} (default: @code{'()})
-This is a list of symbols denoting mount flags.  Recognized flags
-include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow
+This is a list of symbols denoting general mount flags.  Recognized flags
+are @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow
 access to special files), @code{no-suid} (ignore setuid and setgid
-bits), and @code{no-exec} (disallow program execution.)
+bits), @code{no-exec} (disallow program execution), and @code{no-atime}.
+See @code{man 2 mount} for details.
 
 @item @code{options} (default: @code{#f})
-This is either @code{#f}, or a string denoting mount options.
+This is either @code{#f}, or a string denoting filesystem-specific mount
+options passed to the filesystem driver.  See @code{man 2 mount} for details
+and @code{man 8 mount} for options for various filesystems.
 
 @item @code{mount?} (default: @code{#t})
 This value indicates whether to automatically mount the file system when
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index c468144170..8bb10d574d 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -575,6 +575,8 @@ corresponds to the symbols listed in FLAGS."
        (logior MS_NODEV (loop rest)))
       (('no-exec rest ...)
        (logior MS_NOEXEC (loop rest)))
+      (('no-atime rest ...)
+       (logior MS_NOATIME (loop rest)))
       (()
        0))))
 
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 66d63a2931..3316dc8dc5 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -39,6 +39,7 @@
             MS_NODEV
             MS_NOEXEC
             MS_REMOUNT
+            MS_NOATIME
             MS_BIND
             MS_MOVE
             MS_STRICTATIME
@@ -451,6 +452,7 @@ the returned procedure is called."
 (define MS_NODEV              4)
 (define MS_NOEXEC             8)
 (define MS_REMOUNT           32)
+(define MS_NOATIME         1024)
 (define MS_BIND            4096)
 (define MS_MOVE            8192)
 (define MS_STRICTATIME 16777216)
-- 
2.21.0