zfs:Add zfs.devNodes option for zpool import -d

This commit is contained in:
Svein Ove Aas 2015-12-23 00:29:47 +01:00
parent cd7cfcc9a2
commit 9a82dd87f7

View File

@ -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) // {