Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Event processes now get re-used after they handled an event. This reduces
pressure on the CPU significantly because cloned event processes no longer
cause page faults in the main daemon. After the events have settled, the
no longer needed worker processes get killed.
|
|
|
|
|
|
|
|
|
|
The math in skip_to() was the wrong way round and allocated a
variable size array on the stack with a massively negative size.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
|
|
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
|
|
|
|
Directory lookups show up in profiling. The queue files are responsible
for a large proportion of file-related system calls in udev coldplug.
Instead of creating a file for each event, append their details to a
log file. The file is periodically rebuilt (garbage-collected) to
prevent it from growing indefinitely.
This single queue file replaces both the queue directory and the
uevent_seqnum file. On desktop systems the file tends not to grow
beyond one page. So it should also save a small amount of memory in
tmpfs.
Tests on a running EeePC indicate average savings of 5% *udevd* cpu time
as measured by oprofile. __link_path_walk is reduced from 1.5% to
1.3%. It is not completely clear where the rest of the gains come from.
In tests running ~400 events, the queue file is rebuilt about 5 times.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
|
|
|
|
|
|
|
|
Drop pretty expensive case-insensitive matching, and key names in
mixed or lowercase are not supported anyway.
|
|
|
|
|
|
|
|
The timeout wasn't working when settle was run as root:
# udevadm control --stop-exec-queue
# udevadm trigger
# udevadm settle --timeout=1
... (hangs)
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
|
|
|
|
The introduction of the --resolve-names=early/never code introduced a
bug to the OWNER/GROUP lookup. Previously if the name had contained $,
lookup would have been performed later; after the patch, the key ended
up being ignored!
|
|
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526365
|
|
<Keybuk> kay: udev git head ftbfs
<Keybuk> udev-watch.o: In function `udev_selinux_init':
<Keybuk> /../udev/udev.h:130: multiple definition of `udev_selinux_init'
|
|
|
|
|
|
UDev follows the kernel given name, and re-uses the kernel created
device node. If the kernel and spcecified udev rules disagree, the
udev specified node node is created and the kernel-created on is
deleted.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
On Thu, Apr 23, 2009 at 11:39, Alan Jenkins <alan-jenkins@tuffmail.co.uk> wrote:
> I'm puzzled by this function:
>
> /* if we have not seen this seqnum, check if it is/was already queued */
> if (seqnum < udev_queue->last_seen_udev_seqnum) {
> udev_queue_get_udev_seqnum(udev_queue);
> if (seqnum < udev_queue->last_seen_udev_seqnum)
>
> Shouldn't the test be (seqnum > udev_queue->last_seen_udev_seqnum) ?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Messages send back by the udev daemon to the netlink socket are
multiplexed by the kernel and delivered to multiple clients. The
clients can upload a socket filter to let the kernel drop messages
not belonging to a certain subsystem. This prevent needless wakeups
and message processing for users who are only interested in a
subset of available events.
Recent kernels allow untrusted users to listen to the netlink
messages.
The messages send by the udev daemon are versioned, to prevent any
custom software reading them without libudev. The message wire format
may change with any udev version update.
|
|
|
|
|
|
|
|
|
|
|
|
For added protection, ignore any unicast message received on the
netlink socket or any multicast message on the kernel group not
received from the kernel.
Signed-off-by: Scott James Remnant <scott@ubuntu.com>
|