diff options
author | John Darrington <jmd@gnu.org> | 2016-11-29 19:33:39 +0100 |
---|---|---|
committer | David Craven <david@craven.ch> | 2016-12-02 17:43:30 +0100 |
commit | bf7ef1bb848db0977b54ea012789adc68751c68a (patch) | |
tree | d4efaa85135e47a302d64d8310926d6485afbbb1 /gnu/services/base.scm | |
parent | d24727c0197a3e3a050cec33a391bfadf79db813 (diff) | |
download | guix-bf7ef1bb848db0977b54ea012789adc68751c68a.tar.gz |
gnu: file-system-shepherd-service: Use mount-file-system.
* gnu/services/base.scm (file-system-shepherd-service): Use mount-file-system instead of manually mounting the file system.
Diffstat (limited to 'gnu/services/base.scm')
-rw-r--r-- | gnu/services/base.scm | 38 |
1 files changed, 9 insertions, 29 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm index afbecdb47e..2b3d3f8548 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -252,6 +252,8 @@ FILE-SYSTEM." (device (file-system-device file-system)) (type (file-system-type file-system)) (title (file-system-title file-system)) + (flags (file-system-flags file-system)) + (options (file-system-options file-system)) (check? (file-system-check? file-system)) (create? (file-system-create-mount-point? file-system)) (dependencies (file-system-dependencies file-system))) @@ -264,34 +266,12 @@ FILE-SYSTEM." ,@(map dependency->shepherd-service-name dependencies))) (documentation "Check, mount, and unmount the given file system.") (start #~(lambda args - ;; FIXME: Use or factorize with 'mount-file-system'. - (let ((device (canonicalize-device-spec #$device '#$title)) - (flags #$(mount-flags->bit-mask - (file-system-flags file-system)))) - #$(if create? - #~(mkdir-p #$target) - #~#t) - #$(if check? - #~(begin - ;; Make sure fsck.ext2 & co. can be found. - (setenv "PATH" - (string-append - #$e2fsprogs "/sbin:" - "/run/current-system/profile/sbin:" - (getenv "PATH"))) - (check-file-system device #$type)) - #~#t) - - (mount device #$target #$type flags - #$(file-system-options file-system)) - - ;; For read-only bind mounts, an extra remount is - ;; needed, as per <http://lwn.net/Articles/281157/>, - ;; which still applies to Linux 4.0. - (when (and (= MS_BIND (logand flags MS_BIND)) - (= MS_RDONLY (logand flags MS_RDONLY))) - (mount device #$target #$type - (logior MS_BIND MS_REMOUNT MS_RDONLY)))) + #$(if create? + #~(mkdir-p #$target) + #t) + (mount-file-system + `(#$device #$title #$target #$type #$flags #$options + #$check?) #:root "/") #t)) (stop #~(lambda args ;; Normally there are no processes left at this point, so @@ -305,7 +285,7 @@ FILE-SYSTEM." ;; We need an additional module. (modules `(((gnu build file-systems) - #:select (check-file-system canonicalize-device-spec)) + #:select (mount-file-system)) ,@%default-modules))))))) (define file-system-service-type |