Package: udev

Version: 0.079-1

I installed linux-image-2.6.15-1 (2.6.15-2) from Norbert on my alpha
machine. After rebooting I got some strange effects:

* kernel boots correct (OK)

* init starts (OK)

* udev starts to generate "hotplug" events and generates device
nodes. During that the following error occurs (the original wording is
unknown because not copyable from console):
        
udevd[pid]: error receiving netlink events: no buffer space available
The exact position of the error message varies. After that udev does not
generate device nodes anymore. In my case always all /dev/sd* nodes were
missing - system failed to mount anything.

* udev waits for completion of /dev but this timeouts always. Raising the timeout to (from 30 to 600!!!) helps to fix that. Please add a comment in the config file that this timeout is not measured in seconds (there is a "sleep 0.2" in /etc/init.d/udev !!!)
When going then to single user mode the netlink problem does not occur when stopping and starting udev. After that all nodes appear OK and you can remount missing devices with mount -a.

The case for this problem is a too small socket receive buffer. The configuration of this flags with /proc is done later, not before udev starts. It seems, that on my machine udevd is flooded by too many events or is too slow to receive events from the kernel so the kernel stacks them and wants to send them alltogether.

To fix this i put the following file into /etc/init.d:
[EMAIL PROTECTED]:/etc/init.d$ cat fix-udev
#/bin/sh

case "$1" in
    start)
        echo "Fixing bufsize for udev..."
        echo "256000" >/proc/sys/net/core/rmem_max
        echo "256000" >/proc/sys/net/core/rmem_default
        ;;
esac

Then I linked it in /etc/rc.S so that it is started BEFORE udev (04fix-udev). I did not hack this directly into the udev start script because I want to save it during updates of udev...

I think you should open a bug report directly at udev and tell them to set the receive buffer size directly in the udev code so that it does not depend on /proc/variables set before. It could also be an error in the kernel, but on Norberts machine it works. I do not know...

The error also occurs in udev 0.076-Last (which I had installed before). The previous kernel 2.6.14 works perfect (no timeout, no netlink error)

Reply via email to