From: David Craven <david@craven.ch>
To: guix-devel@gnu.org
Subject: [PATCH 2/2] system: Add btrfs file system support.
Date: Wed, 30 Nov 2016 19:36:35 +0100 [thread overview]
Message-ID: <20161130183635.6513-2-david@craven.ch> (raw)
In-Reply-To: <20161130183635.6513-1-david@craven.ch>
* gnu/system/linux-initrd.scm (linux-modules, helper-packages): Add
btrfs modules when a btrfs file-system is used.
* gnu/build/file-systems.scm (check-file-system-irrecoverable-error,
check-file-system-ext): New variables.
(check-file-system): Support non ext file systems gracefully.
---
gnu/build/file-systems.scm | 30 ++++++++++++++++++++----------
gnu/system/linux-initrd.scm | 10 +++++++---
2 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 431b287..9f57ee5 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -410,12 +410,15 @@ the following:
(else
(error "unknown device title" title))))
-(define (check-file-system device type)
- "Run a file system check of TYPE on DEVICE."
- (define fsck
- (string-append "fsck." type))
-
- (let ((status (system* fsck "-v" "-p" "-C" "0" device)))
+(define (check-file-system-irrecoverable-error prog code device)
+ (format (current-error-port)
+ "'~a' exited with code ~a on ~a; spawning Bourne-like REPL~%"
+ prog code device)
+ (start-repl %bournish-language))
+
+(define (check-file-system-ext device type)
+ (let* ((fsck (string-append "fsck." type))
+ (status (system* fsck "-v" "-p" "-C" "0" device)))
(match (status:exit-val status)
(0
#t)
@@ -428,10 +431,17 @@ the following:
(sleep 3)
(reboot))
(code
- (format (current-error-port) "'~a' exited with code ~a on ~a; \
-spawning Bourne-like REPL~%"
- fsck code device)
- (start-repl %bournish-language)))))
+ (check-file-system-irrecoverable-error fsck code device)))))
+
+(define (check-file-system device type)
+ "Run a file system check of TYPE on DEVICE."
+ (cond
+ ((string-prefix? "ext" type)
+ (check-file-system-ext device type))
+ ((string-prefix? "btrfs" type)
+ (zero? (system* "btrfs" "device" "scan")))
+ (#t (format (current-error-port)
+ "Don't know how to check '~a' file systems; skipping~%" type))))
(define (mount-flags->bit-mask flags)
"Return the number suitable for the 'flags' argument of 'mount' that
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 174239a..de8b785 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -193,6 +193,9 @@ loaded at boot time in the order in which they appear."
,@(if (find (file-system-type-predicate "9p") file-systems)
virtio-9p-modules
'())
+ ,@(if (find (file-system-type-predicate "btrfs") file-systems)
+ '("btrfs")
+ '())
,@(if volatile-root?
'("fuse")
'())
@@ -200,11 +203,12 @@ loaded at boot time in the order in which they appear."
(define helper-packages
;; Packages to be copied on the initrd.
- `(,@(if (find (lambda (fs)
- (string-prefix? "ext" (file-system-type fs)))
- file-systems)
+ `(,@(if (find (file-system-type-predicate "ext4") file-systems)
(list e2fsck/static)
'())
+ ,@(if (find (file-system-type-predicate "btrfs") file-systems)
+ (list btrfs-progs/static)
+ '())
,@(if volatile-root?
(list unionfs-fuse/static)
'())))
--
2.9.0
next prev parent reply other threads:[~2016-11-30 18:36 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-30 18:36 [PATCH 1/2] gnu: Add btrfs-progs/static David Craven
2016-11-30 18:36 ` David Craven [this message]
2016-12-01 19:18 ` [PATCH 2/2] system: Add btrfs file system support Marius Bakke
2016-12-02 10:50 ` David Craven
2016-12-02 11:12 ` Chris Marusich
2016-12-02 16:27 ` David Craven
2016-12-03 15:21 ` Ludovic Courtès
2016-12-03 15:18 ` Ludovic Courtès
2016-12-03 15:31 ` Ludovic Courtès
2016-12-03 16:21 ` David Craven
2016-12-05 20:44 ` Ludovic Courtès
2016-12-03 15:15 ` [PATCH 1/2] gnu: Add btrfs-progs/static Ludovic Courtès
2016-12-03 21:41 ` David Craven
2016-12-05 20:51 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161130183635.6513-2-david@craven.ch \
--to=david@craven.ch \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).