From bf7ef1bb848db0977b54ea012789adc68751c68a Mon Sep 17 00:00:00 2001 From: John Darrington Date: Tue, 29 Nov 2016 19:33:39 +0100 Subject: 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. --- gnu/services/base.scm | 38 +++++++++----------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) (limited to 'gnu') 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 @@ (define (file-system-shepherd-service 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 @@ (define (file-system-shepherd-service 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 , - ;; 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 @@ (define (file-system-shepherd-service 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 -- cgit v1.2.3