1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-31 16:21:11 +03:00
Commit Graph

111 Commits

Author SHA1 Message Date
Kay Sievers
34f55103c5 optimize sysfs device and attribute cache
Add negative cache for attributes and look for device in cache before doing
any sysfs access. (Three times speed up for a stupid 1000 rules SYSFS file).

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-29 02:09:35 +01:00
Kay Sievers
6ecd4d1e36 scsi_id, usb_id: request device parent by subsystem
Request specific parents identified by subsystem and don't rely on
a predefined sequence.
Also let the devpath be longer than 72 chars, tsss ...

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-18 04:24:48 +01:00
Kay Sievers
03b24b71e0 fix BUS, ID, $id usage
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-16 06:12:49 +01:00
Kay Sievers
d548032795 better log test and comments
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-13 13:17:10 +01:00
Kay Sievers
1aa1e24848 replace libsysfs
We never used any of the libsysfs convenience features. Here we replace
it completely with 300 lines of code, which are much simpler and a bit
faster cause udev(d) does not open any syfs file for a simple event which
does not need any parent device information.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-09 21:18:00 +01:00
Kay Sievers
fb6e4c2824 add DEVLINKS to the event environment
Multiple symlinks are separated by a space character.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-12-17 16:20:51 +01:00
Kay Sievers
632b682b2a remove unused variables
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-12-16 21:00:14 +01:00
Kay Sievers
fc55cf68ca remove "udev_db" option from config file
All udev state is kept in /$udev_root/.udev/ now. No option to
configure that anymore, it will always be there.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-11-16 04:14:15 +01:00
Kay Sievers
c86be870ce remove all built-in wait_for_sysfs logic
Most of the issues are fixed with the kernel we depend on, for the
remaing ones see the RELEASE-NOTES for a special rule to add.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-11-12 04:17:48 +01:00
Kay Sievers
0b3dfb3d72 udevd: depend on netlink and remove all sequence reorder logic
Netlink will never get out-of-order and we just depend on it from
now on. Udevsend messages will have no effect if they contain a
sequence number (SEQNUM).

Thanks to Bastian Blank <waldi@debian.org>, for the debugging session
which identified a bug where the timeouts are not working if
inotify was not available. All the timeout handling is removed
now and this issue should be solved.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-11-07 02:22:44 +01:00
Kay Sievers
e8d569b414 move code to its own files
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-07-22 12:35:58 -04:00
Kay Sievers
613ffbeb15 fix default-name handling and NAME="" rules
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-07-07 22:32:48 +02:00
Kay Sievers
8815afa1df rename ALARM_TIMEOUT to UDEV_ALARM_TIMEOUT
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-07-06 14:42:26 +02:00
Kay Sievers
b8476286d6 store the imported device information in the udevdb
Any program can query with udevinfo for persistent device
attributes evaluated on device discovery now.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-26 18:55:24 +02:00
Kay Sievers
c07669bd66 udev: handle all events - not only class and block devices
Handle all events with rules. If udev is expected to handle hotplug.d/
the exernal helper must be called.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-05 15:55:29 +02:00
Kay Sievers
6a522681e1 udev: move dev.d/ handling to external helper
Modern rules are expected to call notification and postprocessing with    
the RUN key. For compatibility the current behavior can be emulated
with an external helper.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-05 05:11:29 +02:00
Kay Sievers
c974742bf4 udev: allow final assignments :=
The use of KEY:=<value> will make the key unchangeable by later rules.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-05 04:57:03 +02:00
kay.sievers@vrfy.org
821d0ec803 [PATCH] add RUN key to be able to run rule based notification
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 23:55:00 -07:00
kay.sievers@vrfy.org
6b493a20e1 [PATCH] support log-priority levels in udev.conf 2005-04-26 23:54:59 -07:00
kay.sievers@vrfy.org
e6764498e7 [PATCH] correct enum device_type 2005-04-26 23:53:17 -07:00
kay.sievers@vrfy.org
63f61c5cf6 [PATCH] replace strncpy()/strncat() by strlcpy()/strlcat() 2005-04-26 23:51:00 -07:00
kay.sievers@vrfy.org
e48fc108d9 [PATCH] allow unlimitied count of symlinks 2005-04-26 23:48:48 -07:00
kay.sievers@vrfy.org
f0308095c7 [PATCH] remove typedef for call_foreach_file() handler function 2005-04-26 23:39:48 -07:00
kay.sievers@vrfy.org
03cfa1394f [PATCH] correct udev_init_device 2005-04-26 23:39:48 -07:00
kay.sievers@vrfy.org
9ed47a9f21 [PATCH] move kernel name/number evaluation into udev_init_device() 2005-04-26 23:36:13 -07:00
kay.sievers@vrfy.org
5ef4268205 [PATCH] switch device type to enum 2005-04-26 23:36:13 -07:00
kay.sievers@vrfy.org
7e720bd4ad [PATCH] switch major/minor to dev_t 2005-04-26 23:36:13 -07:00
kay.sievers@vrfy.org
6d56416665 [PATCH] create /block/*/range count of partitons for all_partitions 2005-04-26 23:27:41 -07:00
kay.sievers@vrfy.org
c1ab046124 [PATCH] provide temporary device node for callouts to access the device
%N will create a temporary node for a callout a be sustituted with the
name of the node.
2005-04-26 23:27:32 -07:00
kay.sievers@vrfy.org
b9a8c4821a [PATCH] remove default_* permissions from udev.conf file
With the "permissions only rules" we can just place:
 
   MODE="0660", OWNER="root", GROUP="root"
 
at the beginning of the rules file and get exactly the same behavior.
If no values are given the compiled-in defaults are used.
2005-04-26 23:19:09 -07:00
kay.sievers@vrfy.org
9f8dfa19cf [PATCH] allow multiline rules by backslash at the end of the line
On Sun, 2004-12-19 at 18:31 +0100, Marco d'Itri wrote:
> > On Dec 19, Kay Sievers <kay.sievers@vrfy.org> wrote:
> 
> > (Feature request: would it be possible to extend the rules files parser
> > to support continuation lines? I'd like it to consider lines starting
> > with white space as part of the previous line.)
> 
> How about the usual backslash at the end of the line. Here is a simple
> patch.
2005-04-26 23:19:09 -07:00
kay.sievers@vrfy.org
8b36cc0f17 [PATCH] complete removal of explicit udev permissions config file 2005-04-26 23:17:47 -07:00
kay.sievers@vrfy.org
3fd7a9bfc0 [PATCH] remove unused timestamp field 2005-04-26 23:00:29 -07:00
kay.sievers@vrfy.org
5f72c470ad [PATCH] simplify permission handling
Initialize the defaults in udev_config.c instead of namedev.c.
Replace macro by expanded code. Switch to mode_t instead
of string value. Add and clarify some comments.
2005-04-26 23:00:29 -07:00
kay.sievers@vrfy.org
2af003feb2 [PATCH] trivial cleanups and change some comments 2005-04-26 23:00:29 -07:00
kay.sievers@vrfy.org
45a7b668ec [PATCH] remove unused variables
Remove udev.bus, cause it's currently unused and newer kernels will pass
it in the hotplug environment as PHYSDEVBUS.

Remove udev.action, cause it's unused.

Rename udev_set_values() to udev_init_device().
2005-04-26 23:00:29 -07:00
kay.sievers@vrfy.org
16ac31aaee [PATCH] don't call the hotplug scripts with a test run 2005-04-26 23:00:29 -07:00
kay.sievers@vrfy.org
9af5bb2f8f [PATCH] rename udev_lib to udev_utils and dev_d to udev_multiplex 2005-04-26 22:44:02 -07:00
kay.sievers@vrfy.org
d07557b9b6 [PATCH] handle whole hotplug event with udevd/udev
If /proc/sys/kernel/hotplug points to /sbin/udevsend we handle the whole
hotplug event with multiplexing /etc/hotplug.d/.
2005-04-26 22:37:58 -07:00
kay.sievers@vrfy.org
7efa217db0 [PATCH] add NAME{ignore_remove} attribute
Some broken ide drivers are generating high event traffic, with
add/remove events. With this attribute, it can be specified,
that the node is always available. It may be used in conjunction
with the new DRIVER= match to catch specific kernel device drivers.
2005-04-26 22:27:34 -07:00
kay.sievers@vrfy.org
8673dcb842 [PATCH] Make dev.d/ handling a separate processing stage
Move the logic when and how to call the dev.d/ scripts into the
main processing path.
2005-04-26 22:25:09 -07:00
kay.sievers@vrfy.org
af4b05d491 [PATCH] make the udev object available to more processing stages
Remove the overwriting of main_argv[] hack and use the values
from the udev object.
  
Pass the udev object to call_foreach_file().
  
In the udevstart case, export SUBSYSTEM and UDEVSTART to the
environment.
2005-04-26 22:24:38 -07:00
kay.sievers@vrfy.org
c6478ec1e1 [PATCH] add ACTION to udev object to expose it to the whole process 2005-04-26 22:24:10 -07:00
kay.sievers@vrfy.org
2b41e68a08 [PATCH] replace tdb database by simple lockless file database
This makes the udev operation completely lockless by storing a
file for every node in /dev/.udevdb/* This solved the problem
with deadlocking concurrent udev processes waiting for each other
to release the file lock under heavy load.
2005-04-26 22:16:40 -07:00
kay.sievers@vrfy.org
5a73b25fd6 [PATCH] Don't use any syslog() in signal handler, cause it may deadlock. 2005-04-26 22:09:26 -07:00
kay.sievers@vrfy.org
5d24c6ca36 [PATCH] cleanup netif handling and netif-dev.d/ events
Here we supress the dev.d/ execution if we didn't change a network
interface's name with a rule. This should solve the issue of two
running dhclients for the same interface, cause the
/etc/dev.d/net/hotplug.dev script that fakes the hotplug event runs
with every udevstart for every interface and fakes a second identical
hotplug event on bootup.

With this patch netif interfaces are no longer stored in the udevdb.
It is not needed, cause we don't have permissions or symlinks :) and
all information is available in sysfs.

This patch also moves the dev_d execution calls out of the
udev_add/udev_remove. As with the former api-cleanup-patch we have
all processed data in one udev struct and can place the execution
calls where needed.
2005-04-26 22:02:46 -07:00
kay.sievers@vrfy.org
7a947ce515 [PATCH] big cleanup of internal udev api
Here is the first patch to cleanup the internal processing of the
various stages of an udev event. It should not change any behavior,
but if your system depends on udev, please always test it before reboot :)

We pass only one generic structure around between add, remove,
namedev, db and dev_d handling and make all relevant data available
to all internal stages. All udev structures are renamed to "udev".

We replace the fake parameter by a flag in the udev structure.

We open the class device in the main binaries and not in udev_add, to
make it possible to use libsysfs for udevstart directory crawling.

The last sleep parameters are removed.
2005-04-26 22:02:46 -07:00
kay.sievers@vrfy.org
707680b1cf [PATCH] remove sleeps from udev as it is external now
Here we remove all the sysfs sleep loops from udev as wait_for_sysfs
will do this for us and any other hotplug user. We still keep a small
blacklist of subsystems we don't care about but any missing entry here
will no longer lead to a spinning udev waiting for files.
2005-04-26 22:02:44 -07:00
kay.sievers@vrfy.org
7e89a569cc [PATCH] prevent deadlocks on an corrupt udev database
Here is the patch, that should prevent all of the known deadlocks with
corrupt tdb databases we discovered.
Thanks to Frank Steiner <fsteiner-mail@bio.ifi.lmu.de>, who tested all this
endlessly with a NFS mounted /dev. The conclusion is, that udev will not work
on filesystems without proper record locking, but we should prevent the
endless loops anyway. This patch implements:

o recovery from a corrupted udev database. udev will continue
  without database support now, instead of doing nothing. So the node should
  be generated in any case, remove will obviously not work for custom names.

o added iteration limits to the tdb-code at the places we discovered endless
  loops. In the case tdb tries to find more than 100.000 entries with the
  same hash, we better give up :)

o prevent a {all_partitions} loop caused by corrupt db data

o log all tdb errors to syslog

o switch sleep() to usleep() cause we want to use alarm()
2005-04-26 21:47:44 -07:00
kay.sievers@vrfy.org
cdc60e8afb [PATCH] switch udev's seqnum to u64
The kernel will use a u64 for the sequence number, so we want the same.
2005-04-26 21:37:01 -07:00