nixos: f2fs filesystem module support (close #2085)

This commit is contained in:
Emery Hemingway 2014-03-25 16:39:10 -04:00 committed by Vladimír Čunát
parent c0a30a4b51
commit c96d5fe170
5 changed files with 43 additions and 2 deletions

View File

@ -306,6 +306,7 @@
./tasks/filesystems.nix
./tasks/filesystems/btrfs.nix
./tasks/filesystems/ext.nix
./tasks/filesystems/f2fs.nix
./tasks/filesystems/nfs.nix
./tasks/filesystems/reiserfs.nix
./tasks/filesystems/unionfs-fuse.nix

View File

@ -34,6 +34,7 @@
pkgs.dosfstools
pkgs.xfsprogs
pkgs.jfsutils
pkgs.f2fs-tools
#pkgs.jfsrec # disabled because of Boost dependency
# Some compression/archiver tools.
@ -50,6 +51,6 @@
];
# Include support for various filesystems.
boot.supportedFilesystems = [ "btrfs" "reiserfs" "vfat" ];
boot.supportedFilesystems = [ "btrfs" "reiserfs" "vfat" "f2fs" ];
}

View File

@ -204,7 +204,7 @@ checkFS() {
# does (minutes versus seconds).
if test -z "@checkJournalingFS@" -a \
\( "$fsType" = ext3 -o "$fsType" = ext4 -o "$fsType" = reiserfs \
-o "$fsType" = xfs -o "$fsType" = jfs \)
-o "$fsType" = xfs -o "$fsType" = jfs -o "$fsType" = f2fs \)
then
return 0
fi

View File

@ -0,0 +1,21 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
inInitrd = any (fs: fs == "f2fs") config.boot.initrd.supportedFilesystems;
in
{
config = mkIf (any (fs: fs == "f2fs") config.boot.supportedFilesystems) {
system.fsPackages = [ pkgs.f2fs-tools ];
boot.initrd.availableKernelModules = mkIf inInitrd [ "f2fs" ];
boot.initrd.extraUtilsCommands = mkIf inInitrd ''
mkdir -p $out/bin $out/lib
cp -v ${pkgs.f2fs-tools}/sbin/fsck.f2fs $out/bin
cp -pdv ${pkgs.f2fs-tools}/lib/lib*.so.* $out/lib
'';
};
}

View File

@ -24,6 +24,14 @@ let
btrfs / --data=0 --metadata=1 --label=root btrfs.1 btrfs.2
'';
ksF2fs = pkgs.writeText "ks-f2fs" ''
clearpart --all --initlabel --drives=vdb
part swap --recommended --label=swap --fstype=swap --ondisk=vdb
part /boot --recommended --label=boot --fstype=f2fs --ondisk=vdb
part / --recommended --label=root --fstype=f2fs --ondisk=vdb
'';
ksRaid = pkgs.writeText "ks-raid" ''
clearpart --all --initlabel --drives=vdb,vdc
@ -193,6 +201,16 @@ in {
remountAndCheck;
};
parttest "f2fs filesystem", sub {
$machine->succeed("modprobe f2fs");
kickstart("${ksF2fs}");
ensurePartition("swap", "swap");
ensurePartition("boot", "f2fs");
ensurePartition("root", "f2fs");
remoteAndCheck;
ensureMountPoint("/mnt/boot", "f2fs");
};
parttest "RAID1 with XFS", sub {
kickstart("${ksRaid}");
ensurePartition("swap1", "swap");