2007-08-02 17:45:37

by Eduard-Gabriel Munteanu

[permalink] [raw]
Subject: Dynamic major/minor numbers (or dropping them completely)

*This message was transferred with a trial version of CommuniGate(r) Pro*
Currently, the kernel has the following properties:
1) initramfs can be used to boot the system. We don't need any
predefined /dev entries.
2) udev can be started from the initramfs to create the required entries
in /dev. udev doesn't care about major/minor numbers.
3) Most distros already use udev and maybe initramfs. If there are
exceptions, they can be easily converted.

For the first part, I'm asking: is there any reason why new char/block
drivers shouldn't use dynamic major/minor numbers? Is there any reason
against converting the whole kernel to dynamic major/minor numbers?

Okay, maybe the previous questions looked useless from a pragmatic POV.
But why shouldn't the whole major/minor numbering system be dropped
completely? sysfs already maintains a hierachy of device drivers and
kernel subsystems, one which is better than the major/minor system. The
current system could be replaced by a single-numbered,
dynamically-allocated scheme.

Device files could be stored on a tmpfs filesystem, so that we don't
make any changes to current filesystems. Apps won't need to be modified,
since they access /dev entries by name, provided udev maintains the
current naming scheme.

Any thoughts on this?


2007-08-03 21:14:17

by Chris Snook

[permalink] [raw]
Subject: Re: Dynamic major/minor numbers (or dropping them completely)

Eduard-Gabriel Munteanu wrote:
> *This message was transferred with a trial version of CommuniGate(r) Pro*
> Currently, the kernel has the following properties:
> 1) initramfs can be used to boot the system. We don't need any
> predefined /dev entries.
> 2) udev can be started from the initramfs to create the required entries
> in /dev. udev doesn't care about major/minor numbers.
> 3) Most distros already use udev and maybe initramfs. If there are
> exceptions, they can be easily converted.
>
> For the first part, I'm asking: is there any reason why new char/block
> drivers shouldn't use dynamic major/minor numbers? Is there any reason
> against converting the whole kernel to dynamic major/minor numbers?
>
> Okay, maybe the previous questions looked useless from a pragmatic POV.
> But why shouldn't the whole major/minor numbering system be dropped
> completely? sysfs already maintains a hierachy of device drivers and
> kernel subsystems, one which is better than the major/minor system. The
> current system could be replaced by a single-numbered,
> dynamically-allocated scheme.
>
> Device files could be stored on a tmpfs filesystem, so that we don't
> make any changes to current filesystems. Apps won't need to be modified,
> since they access /dev entries by name, provided udev maintains the
> current naming scheme.
>
> Any thoughts on this?

You're correct that dynamic major/minor numbers are sufficient for most
purposes, but embedded users really need their static numbers. As for ripping
out major/minor numberings, that's a non-starter. Too much of our device
management infrastructure is based around this numbering scheme, and there isn't
really anything wrong with it to justify breaking everything in the change.

As a rule of thumb, if you ever find yourself wondering why we still support
doing statically something we can now do dynamically, the answer is generally
that doing it dynamically sucks for embedded.

-- Chris

2007-08-03 22:08:09

by Al Viro

[permalink] [raw]
Subject: Re: Dynamic major/minor numbers (or dropping them completely)

On Fri, Aug 03, 2007 at 05:13:51PM -0400, Chris Snook wrote:
> You're correct that dynamic major/minor numbers are sufficient for most
> purposes, but embedded users really need their static numbers. As for
> ripping out major/minor numberings, that's a non-starter. Too much of our
> device management infrastructure is based around this numbering scheme, and
> there isn't really anything wrong with it to justify breaking everything in
> the change.
>
> As a rule of thumb, if you ever find yourself wondering why we still
> support doing statically something we can now do dynamically, the answer is
> generally that doing it dynamically sucks for embedded.

And not only embedded. I'm quite happy _not_ running udev on anything
I have root on, except for one test box set exactly to make sure that
patches do not break things for udev-infested boxen.