Re: RFC: disk geometry via sysfs

From: Seewer Philippe
Date: Thu Feb 16 2006 - 03:11:36 EST




Phillip Susi wrote:
> Alan Cox wrote:
>
>> The tools need to know the C/H/S drive addressing data for old drives
>> because it is used to determine partition tables. That doesn't have to
>> be GETGEO but it does need to exist somewhere.
>
> Currently GETGEO very often does not report the same values of the bios
> doesn't it? For some disks it's completely made up, and for others it
> is the value returned by the drive itself, which often differs from the
> bios values. If this is the case, and it is the bios values that must
> be stored in the MBR, then it makes little sense to have GETGEO seeing
> as how it often provides incorrect information.
As stated earlier GETGEO reports the drivers/subsystem's idea of disk
geometry.
> Wouldn't it be better then, to clean up GETGEO everywhere so that unless
> it has correct values from the bios, it should just fail? And leave it
> up to fdisk and friends to inform the user of that failure, choose
> default values, and allow the user to override those defaults should
> they need to?
Thats the problem point here. As of 2.6 the kernel does no longer know
anything about bios geometry. The exception here might be for older
drives which do not support lba, where the physical geometry is the one
the bios reports (if not configured diffently).

This is, as we all know, intentional. Because it's quite impossible to
always and accurately match bios disk information to drives reported by
drivers.

>
> The only time they would even have to worry about it is if they are
> installing linux on a blank disk, and then want to install windows to
> dual boot with it. In that case they might have to correct the CHS
> values in the MBR to match the values the bios provides.
>
>
Not only windows but other os as well.

The problem here is a general interface problem. Tools want one
interface (be it ioctl or sysfs). If they can depend on a kernel
interface only partially and have to determine values themeself
otherwise, that interface should be dropped. Again i'm talking about the
interface, not actual code which might still depend on c/h/s.

On the other hand, if we keep that interface (or perhaps ioctl for
compatibility and sysfs for newer things) and introduce a means to tell
the driver via userspace what we want, many things can be solved. For
example for older drives which need chs, userspace can tell the driver
what the bios uses if values differ. For other implementations which
return defaults which are correct in 80% of all cases, the other 20% can
be overridden.

It's of course not really the kernel's responsability to fix things (or
better allow the user to fix things) not important to Linux, but i think
for the sake of compatility necessary.



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/