1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-25 01:34:28 +03:00
Commit Graph

108 Commits

Author SHA1 Message Date
kay.sievers@vrfy.org
2092fbcdeb [PATCH] support DRIVER as a rule key
Match with a rule against a device with a specific kernel driver.
2005-04-26 22:26:25 -07:00
kay.sievers@vrfy.org
6818c51d7a [PATCH] support SUBSYSTEM as a rule key
This should make it easier to catch e.g all block or net devices with
a single rule.
2005-04-26 22:25:38 -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
greg@kroah.com
800ab95bd5 [PATCH] make udev-test.pl test for root permissions before running
Should prevent false error reports from happening.
2005-04-26 22:09:26 -07:00
kay.sievers@vrfy.org
091215a597 [PATCH] Apply the default permissions even if we found a entry in 2005-04-26 22:08:27 -07:00
kay.sievers@vrfy.org
2b0f835ccc [PATCH] add test for format chars in multiple symlinks to replace 2005-04-26 22:08:27 -07:00
greg@kroah.com
948736dde7 [PATCH] add dumb script to show all sysfs devices in the system. 2005-04-26 22:08:27 -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
greg@kroah.com
8e0871196c [PATCH] fix up the wait_for_sysfs_test script a bit.
We also emit the same things the -mm tree does now, so to make that easier
to test for.
2005-04-26 22:02:45 -07:00
greg@kroah.com
052de0cec6 [PATCH] take out & from wait_for_sysfs_test that I previously missed. 2005-04-26 22:02:45 -07:00
greg@kroah.com
a6150f4a8a [PATCH] add wait_for_sysfs test script to the tarball to help people debug their boxes. 2005-04-26 21:56:02 -07:00
kay.sievers@vrfy.org
f608f8ac16 [PATCH] fix problems using scsi_id with udevstart
when udevstart was running we didn't set the environment and the
subsystem argument for the callouts the dev.d/ scripts.

Here is a fix, that sets that with every udevstart iteration, corrects
argv[0] to be the basename() only not the whole path  and adds a test
for invoking callouts without arguments.
2005-04-26 21:37:03 -07:00
kay.sievers@vrfy.org
0345b86235 [PATCH] add enum tests
On Fri, Sep 10, 2004 at 01:09:07PM -0700, Greg KH wrote:
> On Tue, Sep 07, 2004 at 01:19:34PM +0200, David Zeuthen wrote:
> >
> >         KERNEL="sr*", NAME="%k", SYMLINK="cdrom%e"
> >         KERNEL="scd*", NAME="%k", SYMLINK="cdrom%e"
> >         KERNEL="pcd*", NAME="%k", SYMLINK="cdrom%e"
> >         KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom", NAME="\%k", SYMLINK="cdrom%e"
> >         KERNEL="fd[0-9]", NAME="%k", SYMLINK="floppy%e"
> >         KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy", NAME=\"%k", SYMLINK="floppy%e"
> >
> > New patch is attached.
>
> Nice, I've applied this.
>
> How about sending a patch for the test/udev-test.pl script that adds a
> test for this new paramater, so we make sure to not break it in the
> future.

Here are the tests for the enumeration character %e. I've added a option
string to be able to do a whole sequence of tests without node removal,
so we can skip the "remove" event and get an increasing number to append
to the name. After the sequence test the whole directory is cleaned for
the next tests.
2005-04-26 21:37:01 -07:00
kay.sievers@vrfy.org
3db7fa2702 [PATCH] fix udev segfaults with bad permissions file
On Tue, Sep 14, 2004 at 02:53:12PM +0200, Loleslaw wrote:
> Hi,
> Since I started using udev-031 on my gentoo udevstart would just segfault
> (udev-030 worked). As it turned out I had a file in /etc/udev/permissions.d
> with a single space in one line. I've cleaned the file and it works all
> right, but I thought you could be interested.
> I've traced it to function namedev_init_permissions in namedev_parse.c
> I don't know C well enough to suggest a patch.

Yeah, thanks for pointing that out. It only happens if the file ends with
whitespace-only lines. Here is a fix and a test for udev-test.pl to
cover that case.
2005-04-26 21:37:01 -07:00
greg@kroah.com
0f36e68e8a [PATCH] add test for ! in partition name 2005-04-26 21:35:47 -07:00
greg@kroah.com
ffcd3851b2 [PATCH] add devd_test script. 2005-04-26 21:35:16 -07:00
kay.sievers@vrfy.org
7d855c3116 [PATCH] udevd test script
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 21:35:15 -07:00
greg@kroah.com
b86691919a [PATCH] Added expanded tests to the test framework from Leann Ogasawara <ogasawara@osdl.org> 2005-04-26 21:35:15 -07:00
greg@kroah.com
c40f61e6e8 [PATCH] tweak net_test a bit. 2005-04-26 21:35:14 -07:00
greg@kroah.com
cfdfda1078 [PATCH] make a net_test test script using udevtest. 2005-04-26 21:35:14 -07:00
greg@kroah.com
d5853b48fb [PATCH] add hotplug.dev script to handle renamed network devices. 2005-04-26 21:35:13 -07:00
greg@kroah.com
a008521bb8 [PATCH] add a bunch of network class devices to the test sysfs tree 2005-04-26 21:35:13 -07:00
kay.sievers@vrfy.org
bbbe503ec1 [PATCH] netdev - udevdb+dev.d changes
Here is a patch to change the netdev handling in the database and for
the dev.d/ calls. I applies on top of the udevd.patch, cause klibc has
no sysinfo().

 o netdev's are also put into our database now. I want this for the
   udevruler gui to get a list of all handled devices.
   All devices in the db are stamped with the system uptime value at
   the creation time. 'udevinfo -d' prints it.

 o the DEVPATH value is the key for udevdb, but if we rename
   a netdev, the name is replaced in the kernel, so we add
   the changed name to the db to match with the remove event.

   NOTE: The dev.d/ scripts still get the original name from the
   hotplug call. Should we replace DEVPATH with the new name too?

 o We now only add a device to the db, if we have successfully created
   the main node or successfully renamed a netdev. This is the main part
   of the patch, cause I needed to clean the retval passing trough all
   the functions used for node creation.

 o DEVNODE sounds a bit ugly for netdev's so I exported DEVNAME too.
   Can we change the name?

 o I've added a UDEV_NO_DEVD to possibly skip the script execution
   and used it in udev-test.pl.
   udevstart is the same horror now, if you have scripts with logging
   statements in dev.d/ it takes minutes to finish, can we skip the
   scripts here too?

 o The get_device_type() function is changed to be more strict, cause
   'udevinfo -a -p /block/' gets a class device for it and tries to
   print the major/minor values.

 o bugfix, the RESULT value has now a working newline removal and a test
   for this case.
2005-04-26 21:35:13 -07:00
kay.sievers@vrfy.org
f61d732a02 [PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.

With this patch it is actually possible to specify something like this
in udev.rules:

  KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
  KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"

and you will get:

  [root@pim udev.kay]# cat /proc/net/dev
  Inter-|   Receive                                                | Transmit
   face |bytes    packets errs drop fifo frame compressed multicast|bytes   packets errs drop fifo colls carrier compressed
       lo:    1500     30    0    0    0     0          0         0    1500      30    0    0    0     0       0          0
  private:  278393   1114    0    0    0     0          0         0  153204    1468    0    0    0     0       0          0
     sit0:       0      0    0    0    0     0          0         0       0       0    0    0    0     0       0          0
   blind0:       0      0    0    0    0     0          0         0       0       0    0    0    0     0       0          0


The udevinfo program is also working:

  [root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
    looking at class device '/sys/class/net/private':
      SYSFS{addr_len}="6"
      SYSFS{address}="00:0d:60:77:30:91"
      SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
      SYSFS{features}="0x3a9"
      SYSFS{flags}="0x1003"
      SYSFS{ifindex}="2"
      SYSFS{iflink}="2"
      SYSFS{mtu}="1500"
      SYSFS{tx_queue_len}="1000"
      SYSFS{type}="1"

  follow the class device's "device"
    looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
      BUS="pci"
      ID="0000:02:01.0"
      SYSFS{class}="0x020000"
      SYSFS{detach_state}="0"
      SYSFS{device}="0x101e"
      SYSFS{irq}="11"
      SYSFS{subsystem_device}="0x0549"
      SYSFS{subsystem_vendor}="0x1014"
      SYSFS{vendor}="0x8086"


The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.

I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of  udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2005-04-26 21:35:12 -07:00
kay.sievers@vrfy.org
c013b034ae [PATCH] udev-test.pl cleanup
Here is a small name change, so all expected values are named exp_*
2005-04-26 21:35:10 -07:00
greg@kroah.com
7d12d4e175 [PATCH] add big major tests to udev-test.pl 2005-04-26 21:35:09 -07:00
greg@kroah.com
a5e8d2b4a3 [PATCH] add a test for a minor over 255 2005-04-26 21:35:09 -07:00
greg@kroah.com
7ddb6f47d7 [PATCH] udev-test.pl: print out major:minor and perm test "ok" if is ok. 2005-04-26 21:35:09 -07:00
greg@kroah.com
b9a88fe756 [PATCH] make perm and major:minor test errors be reported properly. 2005-04-26 21:35:09 -07:00
kay.sievers@vrfy.org
fa19f1811c [PATCH] add dev node test to udev-test.pl
> Nice, that's a good start.  Now we need to check the major:minor values
> too somehow...

I better do it immediately, before you put it in the empty TODO :)

Patch is a bit big, cause spaces are changed to tabs to get
space for the longer names.
2005-04-26 21:35:09 -07:00
kay.sievers@vrfy.org
c612a0acc8 [PATCH] add permission tests
> Any chance on being able to add a test for this kind of stuff to the
> udev-test.pl script?

Sure, not brilliant but seems to work :)
Only numeric id's are supported so far.
2005-04-26 21:35:09 -07:00
kay.sievers@vrfy.org
0a5417a0eb [PATCH] "symlink only" test
Here is a test for the "symlink only" rule.

Any reason to do the apply_format() inside the loop?
I've changed it.
2005-04-26 21:35:09 -07:00
kay.sievers@vrfy.org
558f80ba64 [PATCH] callout part selector tweak
Martin Schwenke <martin@meltin.net> asked for this feature and posted a
patch:

 The following patch almost let's me have the following configuration:

  PROGRAM="/sbin/aliaser %b %k %n %M %m", RESULT="?*", NAME="%c{1}", SYMLINK="%c{2+}"

 allowing me to specify an arbitrary number of symlinks by saying
 "giveme the second and later words"."


Here is the actual version with tests and a few words in the man page.
2005-04-26 21:35:09 -07:00
kay.sievers@vrfy.org
35b38379ba [PATCH] cleanup callout fork
Here I change the callout fork logic.
The current cersion is unable to read a pipe which is not flushed at once,
Now we read until it's closed.

The maximum argument count is calculated by the strlen now. We have 100
chars for our result buffer so we can't have more than 50 parameters.
So it's much more clear what will happen now and not some magic boundary
where we use shell behind it.

Parameter can be combined to one by using apostrophes.

this on works now:
  BUS="scsi", PROGRAM="/bin/sh -c 'echo foo3 foo4 foo5 foo6 foo7 foo8 foo9 | sed  s/foo9/bar9/'", KERNEL="sda3", NAME="%c{7}"

Two new test are also added.
2005-04-26 21:35:09 -07:00
kay.sievers@vrfy.org
d5f91372dd [PATCH] conditional remove of trailing sysfs whitespace
Hey, it may never happen, that one wants to distinguish attributes by
trailing spaces, but we should not lose the control over it, just for
being lazy :)

Here we remove the trailing spaces of the sysfs attribute only if the
configured value to match doesn't have any trailing spaces by itself.
So if you put a attribute in a rule with spaces at the end, the sysfs
attribute _must_ match exactly.

Is that cool for everyone?

As usual, 2 tests are added for it with a artificial sysfs file and
a few words to the man page.
2005-04-26 21:35:08 -07:00
patmans@us.ibm.com
56c963dc4d [PATCH] add tests for NAME="foo-%c{N}"
Here is a patch for some new tests.
2005-04-26 21:35:08 -07:00
kay.sievers@vrfy.org
63ead27c22 [PATCH] udev - activate formt length attribute
We carried the the old callout part selector syntax for two releases
now after it was replaced by the new %c{1} syntax. So here we remove
the old syntax and use the code to possibly specify the maximum count
of chars to insert into the string. It will work with all of our format
chars.
I don't know if somebody will use it, but the code is already there :)

's%3s{vendor}' returns "IBM" now, instead of "IBM-ESXS".

Also added is a test for it and a few words in the man page.
2005-04-26 21:34:29 -07:00
greg@kroah.com
dde05ccb8d [PATCH] remove limit of the number of args passed to PROGRAM
If we go over our internal limit of 7, then we call out to /bin/sh
otherwise we handle it ourself without relying on a shell.
2005-04-26 21:32:31 -07:00
greg@kroah.com
595251156b [PATCH] add a "old style" SYSFS_attribute test to udev-test.pl 2005-04-26 21:32:28 -07:00
kay.sievers@vrfy.org
88f09368b3 [PATCH] udev - switch callout part selector to {attribute}
Here we change the magic callout part number selector to the new
atribute syntax. The syntax to select the second part of the callout string:

 '%2c' is now '%c{2}'

I think it's more clear and we no longer misuse the length argument.

The old syntax is still supported, but we should remove it some
time in the future.
2005-04-26 21:32:28 -07:00
kay.sievers@vrfy.org
16378373cb [PATCH] udev - switch SYSFS_file to SYSFS{file}
Here we switch the configs and man pages to the new attribute syntax.
Also the 'partition trick' is mentioned in udev.8

I think it's more clear visible now, that inside the brackets are user
supplied values used and not some magic keys handled:

  'SYSFS_dev' is now 'SYSFS{dev}'

The old syntax is still supported.
2005-04-26 21:32:28 -07:00
patmans@us.ibm.com
93656247f3 [PATCH] udev add some ID tests
Patch against current udev bk to add a few ID rule tests.
2005-04-26 21:32:28 -07:00
kay.sievers@vrfy.org
50e5de03d1 [PATCH] udev - create all partitions of blockdevice
Here is the first try to create all partitons of a blockdevice, since
removable media devices may need to acces the expected partition to
revalidate the media.

It uses the attribute syntax introduced with the last %s{file} patch.
I'm using this with my multi-slot-flash-card-reader:

  SYSFS{model}="USB Storage-SMC ", NAME{all_partitions}="smartmedia"
  SYSFS{model}="USB Storage-CFC ", NAME{all_partitions}="compactflash"
  SYSFS{model}="USB Storage-MSC ", NAME{all_partitions}="memorystick"
  SYSFS{model}="USB Storage-MMC ", NAME{all_partitions}="multimedia"

and I get:

  tree /udev/
  /udev/
  |-- memorystick
  |-- memorystick1
  |-- memorystick10
  |-- memorystick11
  |-- memorystick12
  |-- memorystick13
  |-- memorystick14
  |-- memorystick15
  |-- memorystick2
  |-- memorystick3
  |-- memorystick4
  |-- memorystick5
  |-- memorystick6
  |-- memorystick7
  |-- memorystick8
  |-- memorystick9
  |-- multimedia
  |-- multimedia1
  |-- multimedia10
  |-- multimedia11
  |-- multimedia12
  |-- multimedia13
  |-- multimedia14
  |-- multimedia15
  |-- multimedia2
  |-- multimedia3
  |-- multimedia4
  |-- multimedia5
  |-- multimedia6
  |-- multimedia7
  |-- multimedia8
  |-- multimedia9
  ...


If needed, we can make the number of partions to create
adjustable with the attribute?
2005-04-26 21:32:28 -07:00
kay.sievers@vrfy.org
bb73864724 [PATCH] allow SYSFS{file}
On Sun, Feb 15, 2004 at 03:36:00AM +0100, Kay Sievers wrote:
>
> Since we have %s{file} it may be nice to allow SYSFS{file}.
> This patch allows:
>
>   BUS="usb", SYSFS{idProduct}="a511", NAME="video%n"
>
> compared to the current:
>
>   BUS="usb", SYSFS_idProduct="a511", NAME="video%n"
>
> The curent syntax is still supported.
> Looks a bit nicer and less hackish, I think.

Better patch with infrastructure to easily implement KEY{attribute}
for every other key. The first user is the SYSFS{file} key.
Both versions, brackets or underscore is supported for the attribute.
2005-04-26 21:32:28 -07:00
kay.sievers@vrfy.org
a27cd06c6d [PATCH] Adding '%s' format specifier to NAME and SYMLINK
On Thu, Feb 12, 2004 at 05:34:57PM -0800, Greg KH wrote:
> On Tue, Feb 10, 2004 at 09:14:20AM +0100, Hannes Reinecke wrote:
> > Hi all,
> >
> > this patch makes the format for NAME and SYMLINK a bit more flexible:
> > I've added a new format specifier '%s{<SYSFS_var>}', which allows for
> > the value of any sysfs entry found for this device to be inserted.
> > Example (for our S/390 fcp adapter):
> >
> > BUS="ccw", SYSFS_devtype="1732/03", NAME="%k" \
> > SYMLINK="zfcp-%s{hba_id}-%s{wwpn}:%s{fcp_lun}"
> >
> > I know this could also be done with an external program, but having this
> > incorporated into udev makes life easier, especially if run from
> > initramfs. Plus it makes the rules easier to follow, as the result is
> > directly visible and need not to be looked up in some external program.
> >
> > Comments etc. welcome.
>
> Oops, sorry I missed this for the 017 release.  I'll look at it tomorrow
> and get back to you.  At first glance it looks like a good thing.
>
> Oh, you forgot to update the documentation, that's important to do if
> you want this change to make it in :)

I took a part of the code and made a version that uses already implemented
attribute finding logic.

The parsing of the format length '%3x' and the '%x{attribute}' is a fuction now,
maybe there are more possible users in the future.

I've also added the test to udev-test.pl.
2005-04-26 21:32:28 -07:00
greg@kroah.com
b9fc973b9a [PATCH] Add another test to udev-test.pl and fix a bug when only running 1 test. 2005-04-26 21:32:27 -07:00
greg@kroah.com
2e31718495 [PATCH] let udev-test.pl run an individual test if you ask it to.
just put the test number on the command line:
	udev-test.pl 3
will run test number 3

If no test number is specified, all of the tests will be run, just like before.
2005-04-26 21:32:26 -07:00
greg@kroah.com
f0142622b8 [PATCH] add a block device with a ! in the name, and a test for this. 2005-04-26 21:32:26 -07:00
greg@kroah.com
51a8bb2f36 [PATCH] fix log option code so that it actually works for all udev programs.
Also introduce boolean type for config file to use.
2005-04-26 21:32:26 -07:00
kay.sievers@vrfy.org
2f6cbd1911 [PATCH] convert udevsend/udevd to DGRAM and single-threaded
On Fri, Feb 06, 2004 at 01:08:24AM -0500, Chris Friesen wrote:
>
> Kay, you said "unless we can get rid of _all_ the threads or at least
> getting faster, I don't want to change it."
>
> Well how about we get rid of all the threads, *and* we get faster?

Yes, we are twice as fast now on my box :)


> This patch applies to current bk trees, and does the following:
>
> 1) Switch to DGRAM sockets rather than STREAM.  This simplifies things
> as mentioned in the previous message.
>
> 2) Invalid sequence numbers are mapped to -1 rather than zero, since
> zero is a valid sequence number (I think).  Also, this allows for real
> speed tests using scripts starting at a zero sequence number, since that
> is what the initial expected sequence number is.
>
> 3) Get rid of all threading.  This is the biggie.  Some highlights:
> 	a) timeout using setitimer() and SIGALRM
> 	b) async child death notification via SIGCHLD
> 	c) these two signal handlers do nothing but raise volatile flags,
> 	all the
> work is done in the main loop
> 	d) locking no longer required


I cleaned up the rest of the comments, the whitespace and a few names to match
the whole thing. Please recheck it. Test script is switched to work on subsystem
'test' to let udev ignore it.
2005-04-26 21:32:26 -07:00