From 549d585266e32cf413ae0511edd315f615f0c3a9 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Tue, 11 Feb 2020 14:27:19 -0500
Subject: [PATCH 7/8] gnu: linux-boot: Filter out file system independent
options.
This fixes an issue where options such as "defaults", which are understood by
the command line program "mount", are not understood by the system call of the
same name, which is used in the initial RAM disk.
* gnu/system/file-systems.scm (%file-system-independent-mount-options): New variable.
(file-system-independent-mount-option?): New predicate.
* gnu/build/linux-boot.scm (boot-system): Use the above predicate to filter
out system independent mount options.
---
gnu/build/linux-boot.scm | 3 ++-
gnu/system/file-systems.scm | 17 +++++++++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)
@@ -490,7 +490,8 @@ upon error."
(or (and=> root-fs file-system-flags)
'())))
(root-fs-options (if root-fs
- (file-system-options root-fs)
+ (remove file-system-independent-mount-option?
+ (file-system-options root-fs))
'()))
;; --root-options takes precedence over the 'options' field of the
;; root <file-system> record.
@@ -46,6 +46,7 @@
file-system-location
file-system-type-predicate
+ file-system-independent-mount-option?
file-system-label
file-system-label?
@@ -563,4 +564,20 @@ system has the given TYPE."
(lambda (fs)
(string=? (file-system-type fs) type)))
+(define %file-system-independent-mount-options
+ ;; Taken from 'man 8 mount'.
+ '("async" "atime" "auto" "noatime" "noauto" "context" "defaults" "dev" "nodev"
+ "diratime" "nodiratime" "dirsync" "exec" "noexec" "group" "iversion"
+ "noiversion" "mand" "nomand" "_netdev" "nofail" "relatime" "norelatime"
+ "strictatime" "nostrictatime" "lazytime" "nolazytime" "suid" "nosuid"
+ "silent" "loud" "owner" "remount" "ro" "rw" "sync" "user" "nouser" "users"))
+
+(define (file-system-independent-mount-option? option)
+ "Predicate to check if a <file-system> option is file system independent."
+ (let ((option-name (if (pair? option)
+ (car option)
+ option)))
+ (or (string-prefix-ci? "x-" option-name)
+ (member option-name %file-system-independent-mount-options))))
+
;;; file-systems.scm ends here
--
2.25.0