Skip to contentSkip to conversation

speed up udev-acl.mk

DISCUSSION Martin Pitt 2 participants 4 messages Dec 21, 2009

lore
Share & tools
lore
#0 lore raw

Hey Kay,

Kay Sievers [2009-12-21 16:25 +0100]:

Quoted 6 lines

If it's only about the ACL stuff, we could change the udev-acl logic to maintain hidden symlinks in:
/dev/.udev/acl/c116:32 -> ../../snd/controlC1

then the udev-acl program would just need to apply the same ACL to all nodes found in this directory. :)

This would be one option.

I thought about providing a special-case implementation of udev_enumerate_scan_devices() which fires when there is only a property match and nothing else. In this case we could just walk /dev/.udev/db (which we have to do anyway to match the properties) and skip the /sys walk. This would speedup other applications as well which search for tagged devices.

Martin

Signature · 2 lines
Martin Pitt                        | http://www.piware.de
Ubuntu Developer (www.ubuntu.com)  | Debian Developer  (www.debian.org)
#1 lore raw
Quoted 8 lines · Martin Pitt

Kay Sievers [2009-12-21 16:25 +0100]:

Quoted 6 lines

If it's only about the ACL stuff, we could change the udev-acl logic to maintain hidden symlinks in:
  /dev/.udev/acl/c116:32 -> ../../snd/controlC1

then the udev-acl program would just need to apply the same ACL to all nodes found in this directory. :)

Quoted 8 lines

This would be one option.

I thought about providing a special-case implementation of udev_enumerate_scan_devices() which fires when there is only a property match and nothing else. In this case we could just walk /dev/.udev/db (which we have to do anyway to match the properties) and skip the /sys walk. This would speedup other applications as well which search for tagged devices.

We do not distinguish at the moment between kernel properties and udev-added properties. This would work only for udev-added stuff, and break things which match on kernel-supplied properties which are imported from the "uevent" file.

Kay

#2 lore raw
In reply to Martin Pitt

Martin Pitt [2009-12-21 16:32 +0100]:

Quoted 5 lines

I thought about providing a special-case implementation of udev_enumerate_scan_devices() which fires when there is only a property match and nothing else. In this case we could just walk /dev/.udev/db (which we have to do anyway to match the properties) and skip the /sys walk.

On second look, we can't reliably/easily map the db to sys paths, because of the linked devices in the db.

So let's skip this for now, and I'll rather look into doing some smaller optimizations like b73bf332.

Thanks,

Martin

Signature · 2 lines
Martin Pitt                        | http://www.piware.de
Ubuntu Developer (www.ubuntu.com)  | Debian Developer  (www.debian.org)
#3 lore raw
In reply to Martin Pitt
Quoted 9 lines · Martin Pitt

Martin Pitt [2009-12-21 16:32 +0100]:

Quoted 5 lines

I thought about providing a special-case implementation of udev_enumerate_scan_devices() which fires when there is only a property match and nothing else. In this case we could just walk /dev/.udev/db (which we have to do anyway to match the properties) and skip the /sys walk.

On second look, we can't reliably/easily map the db to sys paths, because of the linked devices in the db.

The db filename can intentionally not be used to find the sysfs device. There have been external tools who did read the db directly and we finally needed to stop them doing this. There is still the major/minor in the db file, which could be used to find the sysfs device, but it would still break the very same logic if used with kernel properties instead of udev properties ...

Quoted 2 lines

So let's skip this for now, and I'll rather look into doing some smaller optimizations like b73bf332.

Sounds good. Otherwise just go for the /dev/.udev/acl/ subdir. That should work fine, if the rest can't be made fast enough.

Kay