Umm, because it's a hack? Yes, it works around the problem of
device names changing as the bus configuration changes.
I am not 100% sure what the best long term solution is. Some
people have suggested that a /proc/scsi/dev/ tree be populated with
names and links that are somewhat representative of whatever the ID,
etc, are for the underlying device. I don't know what the performance
impact would be of doing something like this, but on the surface it
doesn't seem unreasonable. I guess my reaction is that I would prefer
the solution live outside of the kernel (and hence scsidev), as it is
more configurable and adaptable.
Even with scsidev, you are still limited to 16 disks. Yes,
you could hack sd.c so that you get a second major number, but that is
also a hack. The real solution is to get larger minor numbers. It
sounded like the latest ext2 supports the larger device numbers, and
it looks like GNU libc supports a dev_t that is 32 bits, so that the
larger device numbers should easily make it out to user programs. I
would need to test this, but in *theory* a mknod and ls built with GNU
libc will let you create the device nodes that you need.
-Eric