bcachefs: Fix systemd dependencies (#422961)
This commit is contained in:
@@ -111,7 +111,7 @@ let
|
|||||||
deviceUnit = mkDeviceUnit device;
|
deviceUnit = mkDeviceUnit device;
|
||||||
mountUnit = mkMountUnit (prefix + fs.mountPoint);
|
mountUnit = mkMountUnit (prefix + fs.mountPoint);
|
||||||
extractProperty =
|
extractProperty =
|
||||||
prop: options: (map (lib.removePrefix "${prop}=") (builtins.filter (lib.hasPrefix prop) options));
|
prop: options: (map (lib.removePrefix prop) (builtins.filter (lib.hasPrefix prop) options));
|
||||||
normalizeUnits =
|
normalizeUnits =
|
||||||
unit:
|
unit:
|
||||||
if lib.hasPrefix "/dev/" unit then
|
if lib.hasPrefix "/dev/" unit then
|
||||||
@@ -120,8 +120,10 @@ let
|
|||||||
mkMountUnit unit
|
mkMountUnit unit
|
||||||
else
|
else
|
||||||
unit;
|
unit;
|
||||||
requiredUnits = map normalizeUnits (extractProperty "x-systemd.requires" fs.options);
|
requiredUnits = map normalizeUnits (extractProperty "x-systemd.requires=" fs.options);
|
||||||
wantedUnits = map normalizeUnits (extractProperty "x-systemd.wants" fs.options);
|
wantedUnits = map normalizeUnits (extractProperty "x-systemd.wants=" fs.options);
|
||||||
|
requiredMounts = extractProperty "x-systemd.requires-mounts-for=" fs.options;
|
||||||
|
wantedMounts = extractProperty "x-systemd.wants-mounts-for=" fs.options;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
name = "unlock-bcachefs-${utils.escapeSystemdPath fs.mountPoint}";
|
name = "unlock-bcachefs-${utils.escapeSystemdPath fs.mountPoint}";
|
||||||
@@ -136,6 +138,10 @@ let
|
|||||||
bindsTo = [ deviceUnit ];
|
bindsTo = [ deviceUnit ];
|
||||||
requires = requiredUnits;
|
requires = requiredUnits;
|
||||||
wants = wantedUnits;
|
wants = wantedUnits;
|
||||||
|
unitConfig = {
|
||||||
|
RequiresMountsFor = requiredMounts;
|
||||||
|
WantsMountsFor = wantedMounts;
|
||||||
|
};
|
||||||
conflicts = [ "shutdown.target" ];
|
conflicts = [ "shutdown.target" ];
|
||||||
unitConfig.DefaultDependencies = false;
|
unitConfig.DefaultDependencies = false;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|||||||
Reference in New Issue
Block a user