The major number is useful for character devices, which can be
split 12:20. For block devices, a block device is just a block
device. If you just need a major number to fill some software
"need", then just make it 0 for all block devices.
I think these are the most practical suggestions so far:
16:16 Fits in existing struct, symmetric. Too small?
12:20 for char, 0:32 for block. Fits in existing struct.
32:32 This is symmetric.
16:48 48-bit minors are great for disks.
16:32 Almost like above, with padding. Better for "ls -l /dev"
32-bit is easy to fit in the inode. I suspect that 64-bit numbers
would require a hacked fsck (because numbers go in the block list).
16:48 is awesome: With a major for Ethernet, every ethernet card in
the world can have its own minor. With a major for TCP/IP, every port
on every machine can have a minor number. With a major for IDE, every
sector (byte?) on every disk in a machine can have a minor number.
What about tar? I know it can be compiled to support HP-UX 32-bit
device numbers. Can it do 64-bit device numbers? What about cpio?
Being practical, I think 12:20/0:32 is the best choice.