Subject: Re: bug#25917: [PATCH] services: Don't check filesystem even if #:check? if not #:needed-for-boot.

From: Danny Milosavljevic <[email-masked]>
Date: Tue, 14 Mar 2017 20:18:09 +0100

Hi Ludo,

On Tue, 14 Mar 2017 09:41:32 +0100
[email-masked] (Ludovic Courtès) wrote:

> Danny Milosavljevic <[email-masked]> skribis:
> 
> >> One thing I don’t get is that, if the file system is not
> >> needed-for-boot?, then it doesn’t get a Shepherd service in the first
> >> place.  
> >
> > But what is supposed to happen to filesystems where mount? but not needed-for-boot? if Shepherd doesn't mount it?  Does some other part mount it ?  Is it just put into fstab or something ?  
> 
> Yes, it’s just put in fstab.  The use case for this is that then you can
> type just “mount /mnt/foo” and ‘mount’ looks it up in /etc/fstab and
> does the right thing.
> 
> >> In your original message, you wrote that the problem is that “the initrd
> >> doesn't contain the fsck tool”, so it’s a problem in linux-initrd.scm,
> >> no?  
> >
> > I don't know where we should fix it.  If you want to reproduce it, I tested it with this config
> >
> >   (file-systems (cons* ...
> >                        (file-system
> >                         (device "NO NAME")
> >                         (title 'label)
> >                         (mount-point "/mnt/tmp")
> >                         (type "vfat")
> >                         (needed-for-boot? #f)
> >                         (mount? #t)
> >                         (check? #t))
> >                        %base-file-systems))
> >
> > and an USB flash memory stick with name "NO NAME" (the default of the stick :) ).
> >
> > The effect is if not needed-for-boot? but check? , the boot breaks because it can't find fsck.vfat .  
> 
> Ooh, I think that’s another problem, then.  :-)
> 
> ‘file-system-shepherd-service’ is bogus: it only handles ext2:
> 
>                              (setenv "PATH"
>                                      (string-append
>                                       #$e2fsprogs "/sbin:"
>                                       "/run/current-system/profile/sbin:"
>                                       $PATH)))

Oops...

> We should fix that to handle vfat, btrfs, etc., just like ‘base-initrd’
> does.  In fact, we should extract the ‘helper-packages’ thing from
> there and factorize it between linux-initrd.scm and services/base.scm.

Sounds good!

However, the above has (needed-for-boot? #f) and Guix still tries to check / mount it. Why?