From 9d3053819dfd834a1c29a03427c41d8524b8a7d5 Mon Sep 17 00:00:00 2001
From: rendaw <7e9wc56emjakcm@s.rendaw.me>
Date: Mon, 29 Apr 2019 12:08:51 +0200
Subject: [PATCH] file-systems: Support the 'no-atime' flag.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* guix/build/syscalls.scm (MS_NOATIME): New variable.
* gnu/build/file-systems.scm (mount-flags->bit-mask): Support it.
* doc/guix.texi (File Systems): Document it and add cross-references to
the relevant documentation.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
---
 doc/guix.texi              | 9 +++++++--
 gnu/build/file-systems.scm | 2 ++
 guix/build/syscalls.scm    | 2 ++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 8f6e5bc20c8..39d2ee476a6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10753,10 +10753,15 @@ 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), and @code{no-exec} (disallow program execution.)
+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.
 
 @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 mount options passed to the
+file system driver.  @xref{Mount-Unmount-Remount,,, libc, The GNU C Library
+Reference Manual}, for details and run @command{man 8 mount} for options for
+various file systems.
 
 @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 c4681441709..8bb10d574d3 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -575,6 +575,8 @@ (define (mount-flags->bit-mask 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 66d63a29314..3316dc8dc59 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -39,6 +39,7 @@ (define-module (guix build syscalls)
             MS_NODEV
             MS_NOEXEC
             MS_REMOUNT
+            MS_NOATIME
             MS_BIND
             MS_MOVE
             MS_STRICTATIME
@@ -451,6 +452,7 @@ (define MS_NOSUID             2)
 (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)
-- 
GitLab