Unverified Commit c021df57 authored by Martin Weinelt's avatar Martin Weinelt Committed by GitHub
Browse files

Merge pull request #197254 from Atemu/fstab-escape-options

parents 647c745c c2b3c979
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -342,6 +342,14 @@ checkFS() {
    return 0
}

escapeFstab() {
    local original="$1"

    # Replace space
    local escaped="${original// /\\040}"
    # Replace tab
    echo "${escaped//$'\t'/\\011}"
}

# Function for mounting a file system.
mountFS() {
@@ -569,7 +577,7 @@ while read -u 3 mountPoint; do
        continue
    fi

    mountFS "$device" "$mountPoint" "$options" "$fsType"
    mountFS "$device" "$(escapeFstab "$mountPoint")" "$(escapeFstab "$options")" "$fsType"
done

exec 3>&-
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@ let
         else throw "No device specified for mount point ‘${fs.mountPoint}’.")
      + " " + escape (rootPrefix + fs.mountPoint)
      + " " + fs.fsType
      + " " + builtins.concatStringsSep "," (fs.options ++ (extraOpts fs))
      + " " + escape (builtins.concatStringsSep "," (fs.options ++ (extraOpts fs)))
      + " " + (optionalString (!excludeChecks)
        ("0 " + (if skipCheck fs then "0" else if fs.mountPoint == "/" then "1" else "2")))
      + "\n"
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ in rec {
        (onFullSupported "nixos.tests.i3wm")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSimple")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvolDefault")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvolEscape")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvols")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.luksroot")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.lvm")
+4 −3
Original line number Diff line number Diff line
@@ -8,9 +8,10 @@
  # them when fixed.
  inherit (import ./installer.nix { inherit system config pkgs; systemdStage1 = true; })
    # bcache
    # btrfsSimple
    # btrfsSubvolDefault
    # btrfsSubvols
    btrfsSimple
    btrfsSubvolDefault
    btrfsSubvolEscape
    btrfsSubvols
    # encryptedFSWithKeyfile
    # grub1
    # luksroot
+21 −0
Original line number Diff line number Diff line
@@ -911,4 +911,25 @@ in {
      )
    '';
  };

  # Test to see if we can deal with subvols that need to be escaped in fstab
  btrfsSubvolEscape = makeInstallerTest "btrfsSubvolEscape" {
    createPartitions = ''
      machine.succeed(
          "sgdisk -Z /dev/vda",
          "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
          "mkswap /dev/vda2 -L swap",
          "swapon -L swap",
          "mkfs.btrfs -L root /dev/vda3",
          "btrfs device scan",
          "mount LABEL=root /mnt",
          "btrfs subvol create '/mnt/nixos in space'",
          "btrfs subvol create /mnt/boot",
          "umount /mnt",
          "mount -o 'defaults,subvol=nixos in space' LABEL=root /mnt",
          "mkdir /mnt/boot",
          "mount -o defaults,subvol=boot LABEL=root /mnt/boot",
      )
    '';
  };
}