I've attached a patch against 005 for both the block and tty scripts. I
didn't bother running udev backgrounded, since as you say, the new code
runs a lot faster.
After getting a number of different crashes for udev reading broken
udev.config files, I decided to try to make the parser a little
more robust.
The behaviour is changed to stop reading the configuration file
and logging the broken entry instead of silently ignoring it (is
that good? It's easy to just print and continue).
All strcpy()'s to a fixed length string are now implicitly limited
to the bounds of the target string.
I kept the -ENODEV return code for now, not sure if there should be
different ones.
On Tuesday 18 November 2003 02:14, Greg KH wrote:
> On Mon, Nov 17, 2003 at 06:33:32PM +0100, Arnd Bergmann wrote:
> > That would at least be part of the solution I'm looking for. How about
> > extra format characters for bus_id and for the result of a callout
> > program?
>
> Sure, I can see the use for that. Want to send a patch? :)
> Take a look at the current bk tree (which has moved to
> bk://linuxusb.bkbits.net/udev/ ) I've made finding that device a lot
> easier now, and it works for all rule types.
Great, just what I was missing. I didn't see the any link to the bk
repository. Here's the patch for the bus_id. I'll need to think about
the handling of callout results a bit more.
> Problem is, if you use the LABEL rule to match a device, like a SCSI
> vendor, then all of the partitions, as well as the main block device,
> will end up with the same name. That's why I added the "add the number"
> hack to the LABEL rule.
>
> So yes, your patch is correct in that we shouldn't always be adding the
> number to any match for LABEL (like for char devices), but if we do
> that, then we break partitions. Your '%' patch fixes this, but I'd just
> like to extend it a bit. Let me see what I can come up with...
Oh, I see. Do you mean something like this:
LABEL, BUS="usb", model="Creative Labs WebCam 3", NAME="webcam%n-%M:%m-test"
results in: "webcam0-81:0-test"
Nov 15 16:51:53 pim udev[16193]: get_class_dev: looking at /sys/class/video4linux/video0
Nov 15 16:51:53 pim udev[16193]: get_class_dev: class_dev->name = video0
Nov 15 16:51:53 pim udev[16193]: get_major_minor: dev = 81:0
Nov 15 16:51:53 pim udev[16193]: get_major_minor: found major = 81, minor = 0
Nov 15 16:51:53 pim udev[16193]: udev_add_device: name = webcam0-81:0-test
Nov 15 16:51:53 pim udev[16193]: create_node: mknod(/udev/webcam0-81:0-test, 020666, 81, 0)
implement printf-like placeholder support for NAME
%n-kernel number, %M-major number, %m-minor number
Here's a quick patch to:
1) Add an environment variable "SYSFS_PATH" that libsysfs will check
for when getting mount point before searching system's sysfs mount
point.
2) A quick fix to sysfs_get_link where the bug was.
I have tested this out with libsysfs and with udev. I couldn't test
with klibc because I haven't got the tree to build with klibc without
my changes either. I made the link but get an error finding
linux/linits.h. I will figure that out.
Please have a look at the patch. If it's agreeable, please test it. I
really want to add some generic path manipulation functions for the
sysfs_get_link error, rather than my patch's hack. But, I haven't had
time yet to do that. You really sounded like you needed this for
testing, so I'm sending it out to you. I should probably add a
function to set the env variable(?).
support subdirectory creation/removal for NAME="/devfs/is/crazy/video0"
create parent subdirs for device node if needed
remove subdirs when last node is removed
set uid/gid of node specified in udev.permissions
only numeric id's are supported cause we can't resolve with
klibc or libc before real /etc is mounted
I integrated udev with Fedora Core. The main piece is simply building
/udev on boot, since we don't have an initramfs yet. We should also
clear out /udev on shutdown, for /udev directories mounted on persistent
media.
The attached script goes in /etc/init.d
Then do "chkconfig --add udev"
And the rest is handled automatically. I made it for Fedora but it will
probably work, with little change, on any Linux system.
Right now it only does sysfs-based discovery of block and tty devices,
since those are the only types of devices I have on my system. There is
a TODO in the script where we would add the other device types.
Fixup path for kernel includes when building with klibc.
klibc expects the symlink klibc/linux to point to a relatively up
to date tree, use -Iklibc/linux/include to make linux/ and asm/
includes resolve properly, as these won't exist in the regular
klibc/klibc/include location.