[systemd-devel] Handling sysctl entries that depend on module presence?
grawity at gmail.com
Sun Nov 18 22:13:47 PST 2012
On Mon, Nov 19, 2012 at 8:01 AM, Mantas Mikulėnas <grawity at gmail.com> wrote:
> Anything that is written to /sys/module/*/parameters goes to
> modprobe.d(5) -- again, to be applied when the module is inserted, not
> at some fixed point:
> Use sysctl.conf(5) for settings under /proc/sys:
This reminded me that systemd-sysctl doesn't properly handle
sysctl.conf entries that depend on the presence of modules loaded by
In particular, I was having problems with:
net.ipv4.tcp_allowed_congestion_control = cubic reno lp
This setting is required to allow non-root programs (the Transmission
BitTorrent daemon in particular) to use the "lowest priority"
congestion control algorithm.
However, if the "tcp_lp" module is not yet loaded, the write to
/proc/sys is simply refused with EINVAL (if I remember correctly).
And if the module is loaded later (or not loaded manually), without
the sysctl setting being updated, Transmission receives EPERM when it
This doesn't affect TCPCongestion= in systemd socket units, since root
is allowed to set any algorithm, and the module is simply loaded on
demand when systemd asks for it...
How can this be fixed?
More information about the systemd-devel