summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-10-20 21:16:49 +0200
committerLudovic Courtès <ludo@gnu.org>2022-10-20 23:07:37 +0200
commit6352e3a17b5978cf9af9e1668816d8f47ec85208 (patch)
tree967e5859cc2c71607ef53ee6fc582cd7169ddb9a
parent4056cd9480416f38e06f98fdf5acea7c82a4c886 (diff)
downloadguix-6352e3a17b5978cf9af9e1668816d8f47ec85208.tar.gz
syscalls: Define 'MS_NODIRATIME' and recognize "nodiratime".
Fixes <https://issues.guix.gnu.org/58663>.

This is a followup to b665dd4a9902b5722b9e06fd89c203e2221b19e0 and
dcb640f02b1f9590c3bd4301a22bf31bd60c56d4, allowing "nodiratime" to be
preserved for bind mounts.

* guix/build/syscalls.scm (MS_NODIRATIME): New variable.
(option-string->mount-flags): Recognize it.
(statfs-flags->mount-flags): Likewise.
-rw-r--r--guix/build/syscalls.scm7
1 files changed, 5 insertions, 2 deletions
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 7842b0a9fc..61926beb80 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -46,6 +46,7 @@
             MS_NOEXEC
             MS_REMOUNT
             MS_NOATIME
+            MS_NODIRATIME
             MS_STRICTATIME
             MS_RELATIME
             MS_BIND
@@ -537,6 +538,7 @@ the last argument of `mknod'."
 (define MS_NOEXEC             8)
 (define MS_REMOUNT           32)
 (define MS_NOATIME         1024)
+(define MS_NODIRATIME      2048)
 (define MS_BIND            4096)
 (define MS_MOVE            8192)
 (define MS_SHARED       1048576)
@@ -640,7 +642,8 @@ the remaining unprocessed options."
                         ("nodev"      => MS_NODEV)
                         ("noexec"     => MS_NOEXEC)
                         ("relatime"   => MS_RELATIME)
-                        ("noatime"    => MS_NOATIME)))))))
+                        ("noatime"    => MS_NOATIME)
+                        ("nodiratime" => MS_NODIRATIME)))))))
 
 (define (mount-flags mount)
   "Return the mount flags of MOUNT, a <mount> record, as an inclusive or of
@@ -873,7 +876,7 @@ fdatasync(2) on the underlying file descriptor."
      (ST_NODEV      => MS_NODEV)
      (ST_NOEXEC     => MS_NOEXEC)
      (ST_NOATIME    => MS_NOATIME)
-     (ST_NODIRATIME => 0)                         ;FIXME
+     (ST_NODIRATIME => MS_NODIRATIME)
      (ST_RELATIME   => MS_RELATIME))))
 
 (define-c-struct %statfs                          ;<bits/statfs.h>