This patch exposes the wait_for_sysfs functions to all possible users,
so we need to maintain only one list of exceptions. The last list is
hereby removed from udev.c.
jk@blackdown.de [Tue, 19 Oct 2004 05:10:38 +0000 (22:10 -0700)]
[PATCH] wait_for_sysfs update for dm devices
Hi,
I got these when creating LVM2 snapshots:
,----
| Oct 17 04:23:09 server wait_for_sysfs[5120]: error: wait_for_sysfs needs an update to handle the device '/block/dm-6' properly, please report to <linux-hotplug-devel@lists.sourceforge.net>
| Oct 17 04:23:09 server wait_for_sysfs[5129]: error: wait_for_sysfs needs an update to handle the device '/block/dm-6' properly, please report to <linux-hotplug-devel@lists.sourceforge.net>
| Oct 17 04:23:09 server wait_for_sysfs[5131]: error: wait_for_sysfs needs an update to handle the device '/block/dm-7' properly, please report to <linux-hotplug-devel@lists.sourceforge.net>
| [...]
`----
We once implemented the devfsd feature to set the owner of a device node
to the "local" user. This was before we had the dev.d/ scripts. We discussed
a similar issue with D-BUS recently and this should be better handled depending
on the distributions way to do such a thing.
I'm for removing this here as this can be easily covered by a dev.d/
script.
[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.
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.
On Sat, Oct 16, 2004 at 10:32:47AM -0500, Jason Dravet wrote:
> FYI
>
> wait_for_sysfs[2986]: either wait_for_sysfs (udev 038) needs an update to
> handle the device '/class/ppp/ppp' properly (5) or the sysfs-support of
> your device's driver needs to be fixed, please report to
> <linux-hotplug-devel@lists.sourceforge.net>
>
> I am running udev 38-2 and ppp-2.4.2-6.3
Yeah, the ppp-class is missing, we only covered the net ppp-devices.
On Sat, Oct 16, 2004 at 02:48:42PM -0400, Jeff wrote:
> Kay Sievers wrote:
> >On Sat, Oct 16, 2004 at 04:40:51AM +0200, Kay Sievers wrote:
> >
> >Here is a better version. We return successful in the case, that the
> >advertised device does not appear within the timeout or goes completely
> >away while waiting for the attributes. All magic numbers should be
> >readable as a string now.
> >
> >This hopefully fixes the last vc errors.
> >
> K, first patch produced a couple of device unavailables & a slew of no
> device symlinks. Second patch-no messages at all :)
>
> Thank god, if I have to reboot again I'm going to puke.
Nice to hear that we covered all the vc errors now. I think we should
apply the same logic to the /devices device wait loops, as they may go
with a remove event too.
[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.
Hey, we got consistent source filenames today. Let's go ahead :)
I once started this ambitiuos curses gui to edit udev rules files.
udevruler still lays dead around in the tree. I will not finish it
and it is not really useful at his state. If nobody wants to do
something for it, I'm for deleting it.
> > > > That explains the spaces. What about stuff trailing %s, if %s does not
> > > > contain spaces. I.e, in the above example, model is ST336753LC and the
> > > > resulting device file is /dev/scsi_disks/some-proceding-stuff-
> > > > ST336753LC.
> > >
> > > I expect the model value has trailing spaces.
> > >
> > > You may look with:
> > > udevinfo -a -p /block/sdX
> >
> > Yes it does, and it seems for most SCSI devices, vendor and model will
> > have trailing spaces.
>
> It all depends on the vendor and model :)
>
> > I have included a patch to udev-036 to deal with
> > this issue. It trims off trailing whitespace for all sysfs attributes.
> > It might be better to trim off leading whitespace as well.
>
> We already trim it off when matching, but we also allow matching if you
> do put the spaces in there. This patch breaks that, right?
Correct, I have a new patch that trims after the comparison, so it
should work in both cases.
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.
[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()
Here is an update to wait_for_sysfs to print the udev version to syslog,
let hardware net interfaces wait again for the device link and
revert the video4linux to wait for the device. The error here was caused
by a out-of-tree media-driver, that needs the fix, not the our program.
I've added a small comment for that to the log as I expect more of this
to show up and the recent desktop integration work depends heavily on proper
sysfs support, so the drivers should be fixed.
Here is the correction for the dev.d/ scripts too. We should pass
the right argv[0] here too. A script may depend on the right value, as
udev does with udev/udevstart.
Here is the old version:
[pid 4692] execve("/etc/dev.d/default/log.dev", ["./udev", "block"], [/* 41 vars */]) = 0
this the new one:
[pid 9832] execve("/etc/dev.d/default/log.dev", ["/etc/dev.d/default/log.dev", "block"], [/* 41 vars */]) = 0
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.
[PATCH] respect prefix= setting in built udev.conf (updated)
Here is a revised version of the patch. Again, it modifies the Makefile
to respect the prefix= setting when putting paths to
/etc/udev/{rules.s,permissions.d} into the built /etc/udev/udev.conf
file. It also changes the Makefile to create this file at "make" time,
not "make install" time. This allows for udevdir to be specified at
"make" time (thus putting the correct path into udev.conf), but not
specified at "make install" time (thus allowing the installation to
proceed without trying to use the wrong directory).
Submitted By: Kevin P. Fleming <kpfleming@linuxfromscratch.org>
Date: 2004-09-16
Initial Package Version: 032
Origin: David Jensen
Description: correct udev's Makefile and template config file
to respect the "prefix=" setting supplied when it is built; also
build etc/udev/udev.conf at "make" time, not "make install" time