summaryrefslogtreecommitdiff
path: root/udevd.c
AgeCommit message (Collapse)Author
2005-06-05udevd: improve timeout handlingKay Sievers
Allow to override some parameters by environment keys. Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-05udevd: add udevcontrolKay Sievers
Controls the behavior of the running daemon. Currently only stopping and starting of the execution queue is supported. Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-05udevd: listen for netlink eventsKay Sievers
After the first valid netlink-event all event with a serial number received on the udevsend socket will be ignored. Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-04-26[PATCH] add RUN key to be able to run rule based notificationkay.sievers@vrfy.org
SUBSYSTEM=="block", RUN="/sbin/program" will execute the program only for block device events. ACTION="remove", SUBSYSTEM=="block", RUN"/sbin/program" will execute the program, if a block device is removed.
2005-04-26[PATCH] support log-priority levels in udev.confkay.sievers@vrfy.org
2005-04-26[PATCH] udevd: don't delay events with TIMEOUT in the environmentkay.sievers@vrfy.org
On Tue, 2005-03-15 at 09:25 +0100, Hannes Reinecke wrote: > The current implementation of the firmware class breaks a fundamental > assumption in udevd: that the physical device can be initialised fully > prior to executing the next event for that device. Thanks to Hannes for the patch.
2005-04-26[PATCH] fix ia64 compilekay.sievers@vrfy.org
2005-04-26[PATCH] replace strncpy()/strncat() by strlcpy()/strlcat()kay.sievers@vrfy.org
2005-04-26[PATCH] rename LOG to USE_LOG in all placeskay.sievers@vrfy.org
2005-04-26[PATCH] trivial rename of some variableskay.sievers@vrfy.org
2005-04-26[PATCH] udevd: fix valgrind warningmbuesch@freenet.de
==4304== Syscall param sigaction(act) contains uninitialised or unaddressable byte(s) ==4304== at 0x804A37B: (within /sbin/udevd) ==4304== Address 0x52BFE7FC is on thread 1's stack
2005-04-26[PATCH] udevd: throttle the forking of processeskay.sievers@vrfy.org
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.
2005-04-26[PATCH] udevd: add possible initialization of expected_seqnumkay.sievers@vrfy.org
UDEVD_EXPECTED_SEQNUM=$[`cat /sys/kernel/hotplug_seqnum` + 1] ./udevd -d will init udevd, so the next event will not wait for any timeout.
2005-04-26[PATCH] udevd: it's obviously not the brightest idea to exit a device node ↵kay.sievers@vrfy.org
manager if it doesn't find /dev/null
2005-04-26[PATCH] udevd: separate socket handling to prepare for other event sourceskay.sievers@vrfy.org
2005-04-26[PATCH] udevd: support -d switch to become a daemonkay.sievers@vrfy.org
2005-04-26[PATCH] udevd: split up message receiving an queueingkay.sievers@vrfy.org
2005-04-26[PATCH] improve event sequence serializationkay.sievers@vrfy.org
We delay the execution of events if there is already an event running for the same device, a parent or a child device. "add" events with a reference to a physical device will also wait for the physical device to finish. Here we fix the devpath comparison logic to return "busy" only if a complete device names is matching. /block/sdaa will not longer block a /block/sda event.
2005-04-26[PATCH] limit the initial timeout of the udevd event handlingkay.sievers@vrfy.org
Define an inititialization phase, where we delay the events only for a short time to eventually recollect the event sequence instead of delaying the very first events for 10 seconds, which breaks the firmware loader.
2005-04-26[PATCH] handle renamed network interfaces properly if we manage hotplug.d/kay.sievers@vrfy.org
If we take over the hotplug call and manage the events we don't need to call the event fake script in dev.d/. Just set all expected values to the new network interface name and call hotplug.d/. This way the device renaming is completely handled inside of udev and userspace can't get confused.
2005-04-26[PATCH] klibc supports LOG_PID now, so remove our own implementationkay.sievers@vrfy.org
2005-04-26[PATCH] udevd: serialization of the event sequence of a chain of deviceskay.sievers@vrfy.org
Currently udevd delays only events for the same DEVPATH. Example of an "add" event sequence: /block/sda /block/sda/sda1 With this change, we make sure, that the udev process handling /block/sda has finished its work (waited for all attributes, created the node) before we fork the udev event for /block/sda/sda1. This way the event for sda1 can be sure, that the node for the main device is already created (may be useful for disk labels). It will not affect any parallel device handling, only the sequence of the devices directory chain is serialized. The 10.000 disks plugged in will still run as parallel events. :) The main motivation to do this is the program execution of the dev.d/ and hotplug.d/ directory. If we don't wait for the parent event to exit, we can't be sure that the executed scripts are run in the right order. On Thu, Dec 09, 2004 at 09:18:28AM +0100, Kay Sievers wrote: > On Wed, 2004-12-08 at 19:07 -0800, David Brownell wrote: > > Could that argument apply to the underlying hardware, too? > We now make sure that the sequence of events for a device > is serialized for every device chain and the class/block > devices which have a "device" link to a physical device are > handled after the physical device is fully populated and > notified to userspace. It will only work this way on kernels > later than 2.6.10-rc1 cause it depends on the PHYSDEVPATH > value in the hotplug environment.
2005-04-26[PATCH] udevsend/udevd handle events without a subsystemkay.sievers@vrfy.org
Accept event without a subsystem and pass it through udevd. Pass empty environment while starting udevd.
2005-04-26[PATCH] rename udev_lib to udev_utils and dev_d to udev_multiplexkay.sievers@vrfy.org
2005-04-26[PATCH] add MANAGED_EVENT to the forked udev environmentkay.sievers@vrfy.org
This will prevent a loop, if udev sends events back into the daemon.
2005-04-26[PATCH] close connection to syslog in forked udevd childkay.sievers@vrfy.org
2005-04-26[PATCH] udevd exit path cleanupkay.sievers@vrfy.org
2005-04-26[PATCH] prevent udevd crash if DEVPATH is not setkay.sievers@vrfy.org
Just move the event straight to the exec list and don't try to compare a NULL pointer.
2005-04-26[PATCH] remove udev_lib dependency from udevsend, which makes it smallerkay.sievers@vrfy.org
2005-04-26[PATCH] pass the whole event environment to udevdkay.sievers@vrfy.org
Make _all_ hotplug variables available to the forked udev, the udev callouts and the udev dev.d/ scripts. We put the whole environment into a buffer and send it over the udevd socket. udevd recreates *envp[] and passes it to the exec().
2005-04-26[PATCH] Don't use any syslog() in signal handler, cause it may deadlock.kay.sievers@vrfy.org
2005-04-26[PATCH] improve klibc fixup integrationkay.sievers@vrfy.org
2005-04-26[PATCH] cleanup udevd/udevstartkay.sievers@vrfy.org
Change to the same timeout loop we use in the rest of the code. Change some comments and names to be more descriptive. I'm mostly finished with the overall cleanup. I will post a new patch for the udevd-nofork experiment, which will be much smaller now.
2005-04-26[PATCH] sparse cleanups on the treegreg@kroah.com
2005-04-26[PATCH] close the syslogkay.sievers@vrfy.org
Seems that we never closed the opened syslog. Here is a patch to do this in all our binaries.
2005-04-26[PATCH] fix asmlinkagembuesch@freenet.de
This patch fixes the reintroduced bug with the sig_handler(), if we link against a -mregparm=3 compiled klibc on i386. It also fixes some compiler warnings about redefined asmlinkage on some systems. Also some (broken?) compilers on distros throw out warnings if asmlinkage is before "static void". This fixes it, too.
2005-04-26[PATCH] fix incompatible pointer type warningmbuesch@freenet.de
This patch fixes two warning: assignment from incompatible pointer type asmlinkage is the reason for the warning. We can simply cast to avoid it. It also fixes this warning: warning: implicit declaration of function `umask'
2005-04-26[PATCH] PATCH udev close on execharald@redhat.com
selinux wants a clean fd set, so better close all open fds
2005-04-26[PATCH] PATCH some cleanups and security fixesharald@redhat.com
posted by Steve Grubb on https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=130351
2005-04-26[PATCH] switch udev's seqnum to u64kay.sievers@vrfy.org
The kernel will use a u64 for the sequence number, so we want the same.
2005-04-26[PATCH] pass SEQNUM trough udevdkay.sievers@vrfy.org
here we change udevd to pass the SEQNUM from the hotplug environment to udev and the dev.d/ scripts. We need this for HAL to match the hotplug event with the dev.d/ events. It also changes the type from int to long to match the kernel.
2005-04-26[PATCH] Add 'asmlinkage' to udev-030trini@kernel.crashing.org
The following patch adds 'asmlinkage' defines to udev, to kill off 2 warnings on !i386. Signed-off-by: Tom Rini <trini@kernel.crashing.org> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2005-04-26[PATCH] fix udevd zombieskay.sievers@vrfy.org
The recent version of klibc switched to -mregparm=3. This broke the signal handlers parameter, cause it is called directly from the kernel with the parameter on the stack not in a register.
2005-04-26[PATCH] catchup with recent klibckay.sievers@vrfy.org
Our own implementation of the sysinfo system call is no longer needed, cause it's merged it into klibc now.
2005-04-26[PATCH] udevd test scriptkay.sievers@vrfy.org
Thanks to Yin, Hu <hu.yin@intel.com>, who made a nice perl script to test the expected behavior of the udevd sequence number handling. The test sends different SEQNUM sequences to udevd, while analyzing the reordering and timeout handling of udevd.
2005-04-26[PATCH] switch udevd's msg_dump() to #definekay.sievers@vrfy.org
Here we switch the msg_dump() to #define instead of commenting it out.
2005-04-26[PATCH] remove compiler warning from udevd.cgreg@kroah.com
2005-04-26[PATCH] DEVPATH for netdevkay.sievers@vrfy.org
Here we change the DEVPATH for netdev's in the environment of the dev.d/ scripts to the name the device is renamed to. The original name doesn't exist in the kernel after rename.
2005-04-26[PATCH] udevd race conditions and performance, assorted cleanups - take 2kay.sievers@vrfy.org
here is a patch on top of your nice improvements. I fixed the whitespace and it hopefully fixes the stupid timestamp bug in udevd. Some stupid OS sets the hwclock to localtime and linux changes it to UTC while starting. If any events are pending they may be delayed by the users time distance from UTC :) So we use the uptime seconds now.
2005-04-26[PATCH] udevd race conditions and performance, assorted cleanupschris_friesen@sympatico.ca
This patch covers a number of areas: 1) sysfs.h is fixed up to use the common dbg() macro. This fixes the case where DEBUG is defined but USE_LOG isn't. 2) udevstart.c is modified to include the proper headers, rather than getting them indirectly which can break depending on Makefile flags 3) udevd.c gets some major changes: a) I added a pipe from the signal handler. This fixes the race conditions that I mentioned earlier. Basically, the point of the pipe is to force the select() call to return immediately if a signal handler fired before we actually started the select() call. This then lets us run the appropriate code based on flags set in the signal handler proper. b) I added a number of flags to coalesce calls to common routines. This should make things slightly more efficient. c) since most calls will tend to come in with a sequence number larger than what has been received, I switched msg_queue_insert() to scan the msg_list backwards to improve performance. filename="udevd.diff"