Just stat() the "dev" file in the device directory instead of
opening the directory and iterating over all entries.
Make udevstart work with the settings in with udev.conf so we can
run a test program.
Add a test for udevstart.
Remove changelog stuff from code. We should never start with this
silly thing.
udev can create the temporary node for us now. (On bootup we don't
know where a writable filesystem is mounted). Also the parent handling
is not needed anymore, cause udev is able to pass us the node name
of the parent device.
Events for partition devies may want to read the main block device
name to compose it's own name or read a disklabel from the main device.
SUBSYSTEM="block", KERNEL="*[1-9]", NAME="%P-p%n"
will append the partition number to the name of the main block device.
We are already using %u in the sscanf() format string.
The patch replaces the int for the kernel release number with
unsigned int, as we can never have negative release numbers.
First case without the patch:
KERNEL="hd*", GROUP="disk", MODE="0660"
KERNEL="hdc", SYMLINK="cdrecorder", MODE="0666"
brw-rw---- 1 root disk 22, 0 Feb 5 14:08 /dev/hdc
Second case without the patch:
KERNEL="hd*", GROUP="disk", MODE="0660"
KERNEL="hdc", MODE="0666"
brw-rw-rw- 1 root disk 22, 0 Feb 5 14:08 /dev/hdc
Adding prototypes for functions resulted in an error, cause:
table_find_disk(disk_snum, &chassis_num, &slot_num);
is called but the function is defined as:
int table_find_disk(char *serialnumber , int *host_num, int *chassis_num, int *slot_num)
which can obviously not work correctly.
Using popen() is not klibc compatible, so skip the compilation if
a klibc compile is requested.
Move code into a .c-file instead of big inline functions in a header file.
Pass the device name down instead of relying that the node name is equal
to the kernel name.
The -d option in udev_allows to go from a partition to the underlying disk
for s390 dasd labels. If the device is already the disk itself, finding the
parent will fail, therefore -d on /sys/block/dasda/ for example gives no
result at all.
If the system reaches a defined limit of processes in running state, udevd
starts to count its own processes in running state from its session (all
forked hotplug child processes, subprocesses and callouts) and throttles
further process forking if the limit is reached.
This should help setups with hundreds of events emitted hotplug events
in parallel with hundreds of processes in "R" state. which makes the machine
unresponsible.
I placed a 100% cpu time consuming program in /etc/hotplug.d/ which runs for 5
seconds. With this patch I can load "scsi_debug add_host=100" without any major
problem. Without the patch the box is completly unresponsible for many minutes.