From 9a82dd87f7bfa6be85ecd70e118811accdd04a4d Mon Sep 17 00:00:00 2001 From: Svein Ove Aas Date: Wed, 23 Dec 2015 00:29:47 +0100 Subject: [PATCH 1/2] zfs:Add zfs.devNodes option for zpool import -d --- nixos/modules/tasks/filesystems/zfs.nix | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix index dedd3f5ca451..14c6b05f95c7 100644 --- a/nixos/modules/tasks/filesystems/zfs.nix +++ b/nixos/modules/tasks/filesystems/zfs.nix @@ -73,6 +73,21 @@ in ''; }; + devNodes = mkOption { + type = types.path; + default = "/dev"; + example = "/dev/disk/by-id"; + description = '' + Name of directory from which to import ZFS devices. + + Usually /dev works. However, ZFS import may fail if a device node is renamed. + It should therefore use stable device names, such as from /dev/disk/by-id. + + The default remains /dev for 15.09, due to backwards compatibility concerns. + It will change to /dev/disk/by-id in the next NixOS release. + ''; + }; + forceImportRoot = mkOption { type = types.bool; default = true; @@ -214,7 +229,7 @@ in done ''] ++ (map (pool: '' echo "importing root ZFS pool \"${pool}\"..." - zpool import -d /dev/disk/by-id -N $ZFS_FORCE "${pool}" + zpool import -d ${cfgZfs.devNodes} -N $ZFS_FORCE "${pool}" '') rootPools)); }; @@ -255,7 +270,7 @@ in }; script = '' zpool_cmd="${zfsUserPkg}/sbin/zpool" - ("$zpool_cmd" list "${pool}" >/dev/null) || "$zpool_cmd" import -d /dev/disk/by-id -N ${optionalString cfgZfs.forceImportAll "-f"} "${pool}" + ("$zpool_cmd" list "${pool}" >/dev/null) || "$zpool_cmd" import -d ${cfgZfs.devNodes} -N ${optionalString cfgZfs.forceImportAll "-f"} "${pool}" ''; }; in listToAttrs (map createImportService dataPools) // { From 7688206a0bfaddf950a1fb85b84fabdc1232e7f8 Mon Sep 17 00:00:00 2001 From: Svein Ove Aas Date: Wed, 23 Dec 2015 00:33:06 +0100 Subject: [PATCH 2/2] zfs:Change default for -d to /dev/disk/by-id --- nixos/modules/tasks/filesystems/zfs.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix index 14c6b05f95c7..f4c42b162206 100644 --- a/nixos/modules/tasks/filesystems/zfs.nix +++ b/nixos/modules/tasks/filesystems/zfs.nix @@ -75,7 +75,7 @@ in devNodes = mkOption { type = types.path; - default = "/dev"; + default = "/dev/disk/by-id"; example = "/dev/disk/by-id"; description = '' Name of directory from which to import ZFS devices.