Udev USB device class links

Bryan Kadzban bryan at kadzban.is-a-geek.net
Thu Jul 26 09:49:03 PDT 2007

On Thu, Jul 26, 2007 at 10:25:57AM -0600, Matthew Burgess wrote:
> On Thu, 26 Jul 2007 09:17:52 -0700, "Dan Nicholson" <dbn.lists at gmail.com> wrote:
> > On 7/26/07, Dan Nicholson <dbn.lists at gmail.com> wrote:
> >> The 2.6.22 kernel (maybe 2.6.21 too, didn't check)

Nope, that setting is only in 2.6.22.  :-)

> >> has an option
> >> CONFIG_USB_DEVICE_CLASS that's marked as deprecated. The help text
> >> states that it is unnecessary if the following udev rule is used:
> >>
> >> SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", \
> >>     NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
> >>
> >> Does anyone have a problem if I add that to our rules?
> > 
> > Actually, it seems that they're the same rule, but the kernel no
> > longer supplies the usb_device subsystem is removed in 2.6.22. Here's
> > a relevant bug:
> > 
> > https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=248916#c10

Yeah, there's been some intermittent discussion on linux-hotplug-devel
about this.  IIRC, the usb_device class doesn't exist anymore, and some
other part of the USB stuff creates those devices now.  (The real USB
device?  The USB interface?  Not quite sure.)

As Kay said in that bug, the old method had some unfixable race
conditions; that's why it got removed (when that kernel option is
disabled, anyway). 

> > So, the new rule can replace the old one depending on whether
> > CONFIG_USB_DEVICE_CLASS is set. I think both rules should be there so
> > that our rules stay compatible whether this setting is Y or N. Also,
> > leaving the older rule there means you get /dev/bus/usb nodes if you
> > run an older kernel.
> I'm not sure we need both rules.  If CONFIG_USB_DEVICE_CLASS=n, the new
> rule will take effect.  If CONFIG_USB_DEVICE_CLASS=y, whichever of the
> NAME= rules is hit first will take effect, if my understanding of Udev
> rule evaluation is correct.  Therefore, if the new rule is placed above
> the existing one, the existing one then becomes entirely redundant.

As long as 2.6.22 kernels provide the $DEVTYPE / $BUSNUM / $DEVNUM
values when CONFIG_USB_DEVICE_CLASS is enabled, then that's true.  I
don't know whether they do, though.  I'm still running; Dan, if
you're running 2.6.22.x with the USB device class stuff on, can you see
whether the new rule will work?

> I understand that someone running an older kernel would need the old
> rule, but then we don't officially support running older versions of
> any of our packages

Agreed.  If 2.6.22 provides the above environment variables no matter
what CONFIG_USB_DEVICE_CLASS is set to, then yank the old rule out.
Especially since it's really really ugly...  ;-)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.linuxfromscratch.org/pipermail/lfs-dev/attachments/20070726/e16d8116/attachment.sig>

More information about the lfs-dev mailing list