tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: (Semi-random) thoughts on device tree structure and devfs



It would help if you started by showing where your disk would be in the device tree. Then I can tell you what (more or less) you need in your config file.

USB, or whatever else, is no magic. You can specify explicitly where your disk is, and have it show up with a specific device number even with other devices attached anywhere.

I seem to remember that way back there was even a tool (in pkgsrc?) which extracted your current device setup, and created a config file from that, so that you would always get the same enumeration, no matter what else showed up on the machine.

The point is, the config file totally, and exactly describes your hardware setup. Your suggestion would simply mean that this information would be duplicated in the file system. The config file have the additional "feature" of actually making the device appear with the same name, even if you move it around, by just changing the config file. Everything else in the system will not have to be told after that. And the names exposed, and referred to, are simple and short, even though you do have the full tree described in the config file.

Someone else mentioned that the problem have grown for the simple reason that hardware configurations change much more often now than in the past. I would agree with that. However, for vital pieces of the hardware, the setup normally don't change that much (such as the disks normally used by the system).

So, the device configuration and enumeration is only random so far as that if you tell the system that it is okay to give a device a random number, it will actually possibly do that.
Otherwise it is totally predictable.

If you, on the other hand, do move your disk around (be that by using USB and different ports and hubs, or different controllers), neither the old config, nor your new solution will help. The disk will change identity (or path) (well, with the old config, it might actually keep it's identity, but that's a chancy proposition at best). This is why a way to refer to disks by some other property would be nice (such as disk labels).

(DEC actually solved this a long time ago, by letting disks have identities, which were not in any way related to anything else than the disk, and that was the unit numbers on MSCP disks, which you preferrably kept unique for the whole system, but as with many other nice things, it fell out of fashion with revolution of PC commodity hardware, which have a foresight shorter than my nose.)

        Johnny


Masao Uebayashi wrote:
Have everyone forgotten how to set up their own kernel? Is everyone now booting GENERIC? (Or just making a copy of GENERIC, with a few patches without understanding what they are editing?)

The whole point being that if you boot a kernel, in which you have configured the whole system to connect anything anywhere, you should not be surprised if the device enumeration might seem random. If you want predictable device enumetaion, you can have that, and have been able to have that for over twenty years...

The line
wd*     at atabus? drive ? flags 0x0000

(to use one example) says that match any wd type disk to any unit number on any atabus, without doing any closer matching. Ie. kindof unpredictable.

The asterisks and question marks means exactly that. If you want predictable matching that stays the same at every boot, no matter what hardware you put on the system, you write explicit lines in the config instead.

Imagine if I want to use a USB disk as / on my DELL OptiPlex 745.  The device
tree of that machine looks like:

/mainbus0
  /pci0
    /puhb0
      /agp0
    /ppb0
      /pci0
        /vge0
          /ukphy0
        /vga0
          /wsdisplay0
          /drm0
        /uhci0
        /azalia0
        /ppb0
          /pci0
        /ppb1
          /pci0
        /uhci1
        /uhci2
        /uhci3
        /uhci4
        /ppb2
          /pci0
        /ichlpcib0
          /isa0
            /lpt0
            /com0
        /piixide0
          /atabus0
            /wd0
          /atabus1
            /atapibus0
              /cd0
        /ichsmb0
        /piixide1
          /atabus0
          /atabus1

How do you write a kernel config which can always identify my USB disk as
sd0a, even if I plug random devices?

Masao



Home | Main Index | Thread Index | Old Index