Suggestion for Kernel feature?
I have a suggestion for a Linux Kernel feature that I would like to make, but I'm not quite sure how to do that.
The 2.6 Kernel has centralized partition detection and now detects partitions on block devices with more than 1 minor unit number. In most cases that works fine. However, when using some RAID disk devices (ex. Promise RAID) trying to detect partitions on disks can cause I/O errors or even prevent booting.
It would be helpful if the Kernel or block drivers for disks had an option to exclude a list of devices from partition detection. I had to resort to editing the "sd.c" source file in order to boot on my Promise RAID controller.
I made this change in "sd.c" to exclude the first four SCSI disk devices from partition detection, since those are my Promise RAID disks. I realize that this is not a usable approach for the "standard" kernel.
Old:
gd->minors = 16;
New:
gd->minors = (index < 4) ? 1 : 16;
What would be more difficult is to accept kernel boot parameters and then compare the device name against a list of excluded devices that should not use partitions. That is essentially what I'm suggesting as a Kernel feature.
It would also be helpful if more distros included "dmraid" since that allows 2.6 to be used on some RAID controllers that only had a kernel 2.4 version of the driver supporting RAID.
Overall the 2.6 Kernel is a great improvement, but unfortunately some companies that were enthusiastic about supporting Linux 2.4 are now disinterested in supporting Linux 2.6. Anything that can be done to support additional devices on 2.6 will help the situation.
After my experiences with Promise, I can't recommend their products to anyone interested in forward or backward compatibility. They are even poor at supporting newer versions of Windows on existing products and that doesn't speak well for the chances of supporting new versions of the Linux Kernel. Luckily the Linux community has been helpful or I would still be trying to figure out how to run Linux on my hardware.
|