chiark / gitweb /
networkd: fix kernel rtnl receive buffer overrun error
authorAlin Rauta <alin.rauta@intel.com>
Thu, 27 Nov 2014 17:50:48 +0000 (18:50 +0100)
committerTom Gundersen <teg@jklm.no>
Thu, 27 Nov 2014 17:59:47 +0000 (18:59 +0100)
commitbe660c371b231c253a97464ddd8f32ec8721da21
tree5d66f4f5a4abb1a0e011b1cca596280dc065063c
parent0e3434aeb1eed951fdbeddacc6126e10d82a1c8b
networkd: fix kernel rtnl receive buffer overrun error

We got the following error when running systemd on a device  with many ports:

"rtnl: kernel receive buffer overrun
Event source 'rtnl-receive-message' returned error, disabling: No buffer space
available"

I think the kernel socket receive buffer queue should be increased. The default
value is taken from:
"/proc/sys/net/core/rmem_default", but we can overwrite it using SO_RCVBUF
socket option.

This is already done in networkd for other sockets.
For example, the bus socket (sd-bus/bus-socket.c) has a receive queue of 8MB.
In our case, the default is 208KB.

Increasing the buffer receive queue for manager socket to 512KB should be enough
to get rid of the above error.

[tomegun: bump the limit even higher to 8M]
src/libsystemd/sd-rtnl/sd-rtnl.c
src/network/networkd-manager.c
src/systemd/sd-rtnl.h